SqlCommand返回1,但数据库没有得到更新..我做错了什么?
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("INSERT INTO Alarm (artistname, tijd) VALUES (@artistname, @tijd)", connection);
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@artistname", alarm.ArtistName);
cmd.Parameters.AddWithValue("@tijd", alarm.Time);
connection.Open();
int a = cmd.ExecuteNonQuery();
System.Windows.Forms.MessageBox.Show(a.ToString());
// returns 1 but database doesn't actually update..
}
上面的代码是我用来更新我的数据库的报警表。 int a返回1,但数据库实际上没有更新。我究竟做错了什么? visual studio也不会给我任何错误信息。SqlCommand返回1,但数据库没有得到更新..我做错了什么?
ExecuteNonQuery将返回成功的1。您正在执行INSERT
声明而不是UPDATE
声明。如果你想添加的新记录的ID使用
INSERT INTO Alarm (artistname, tijd) VALUES (@artistname, @tijd);
Select Scope_Idenitity();
然后用
int a = (int)cmd.ExecuteScalar();
如果ExecuteNonQuery成功,则返回受影响的行数不为1。我认为OP只是在“东西进入我的数据库”的意义上使用了术语_updated_ –
是的,我使用术语''updated''作为Tim的意思''东西进入我的数据库''' 给我有2个列表视图> (1充满了他们玩的艺术家的名字和时间) (1为空) 如果我从listview1中选择一位艺术家并按下''添加闹钟' '我想写这个艺术家的时间到我的table.alarms并在listview2中查看它(显示我为不同艺术家设置的所有警报)。 问题: Listview1正常工作 Listview2可以查看alarms.table我的数据库(测试) 但我不能从窗体插入项目。 –
您可能需要提交您的事务。 –
像sqllite这样的一些数据库总是使用事务,您需要提交事务以'保存'对数据库的更改(或者可能关闭连接) –
您怎么知道数据库未更新?你正在查询并没有插入任何内容? – NicoRiff