我正在为大学写一个小型应用程序,一个视频租赁应用程序。我从数据库读取没有问题,但我无法更新表中的数据。
特别是,我希望在有人租借电影后更新显示库存电影数量的单元格。
到目前为止,我一直在尝试这个:
string updateDVDs = "UPDATE Products SET dvd_quantity = " + product.Quantity + " WHERE title = '"+ product.Name +"';";
cmdUpdateDVDs = new SqlCeCommand(updateDVDs, dBConnection);
dBConnection.Open();
cmdUpdateDVDs.ExecuteNonQuery();
dBConnection.Close();
我没有收到任何错误,但表格中的单元格没有更新。任何帮助将不胜感激,如果您需要更多信息,请告诉我。
更新: 好的,我有一些有趣的进展,我已将代码更新为:
string updateDVDs = "UPDATE Products SET dvd_quantity = " + product.Quantity + " WHERE title = '" + product.Name + "'";
dBConnection = new SqlCeConnection(connectionString);
cmdUpdateDVDs = new SqlCeCommand(updateDVDs, dBConnection);
cmdUpdateDVDs.Connection.Open();
int rows = cmdUpdateDVDs.ExecuteNonQuery();
dBConnection.Close();
从我在 MSDN 上可以看出,这两种方法都是有效的,但第二种方法似乎有效。现在奇怪的是,我租了电影《虎胆龙威》,一切都很顺利,我得到了这些结果:
一切都好,从这一点上没有退路,所以我退出了应用程序并重新开始。我第二次去租《虎胆龙威》确认,成功!!DVD 数量上的新读数为 0,正如预期的那样:
但是,当我在 Visual Studio 中打开 Product 表时,原始值仍然存在:
不仅如此,当我在 Visual Studio 中打开表格后再次运行应用程序时,DVD 数量会重置为原始值,而更新的值会消失。
我在这里错过了一些简单的东西吗?我试过刷新表,它没有任何区别。只要我不在 Visual Studio 中打开表,应用程序就会按预期运行,无论我运行多少次,值都会按预期更新,直到我打开表本身。