每当我执行我的 C# 代码时,一切都很顺利,没有编译器错误,什么都没有。 但是当我在服务器资源管理器中查看我的表时,没有插入任何内容。 重新启动 Visual Studio,仍然没有。
我去调试,在它执行 ExecuteNonQuery()
之前查看了 cmd
字符串,该字符串仍然是 @itmId,...
等。不确定这是否会影响它。有帮助吗?
try
{
Item workingItem = mItemList.Items[itemCombo.SelectedIndex - 1] as Item;
SqlCeConnection sc = new SqlCeConnection(SalesTracker.Properties.Settings.Default.salesTrackerConnectionString);
SqlCeCommand cmd = new SqlCeCommand("INSERT INTO Sales VALUES(@itmId, @itmNm,@fstNm, @date,@prft, @commision)", sc);
cmd.Parameters.AddWithValue("@itmId", workingItem.ItemId);
cmd.Parameters.AddWithValue("@itmNm", workingItem.ItemName);
cmd.Parameters.AddWithValue("@fstNm", logedSalesmen.ID);
cmd.Parameters.AddWithValue("@date", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
cmd.Parameters.AddWithValue("@prft", workingItem.Profit);
cmd.Parameters.AddWithValue("@commision", workingItem.Commision);
sc.Open();
cmd.ExecuteNonQuery();
sc.Close();
MessageBox.Show("Save successfull");
this.Close();
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
编辑:所以这是使用临时调试数据库的问题,我使用 select count(0) 来解决这个问题。但我不确定我应该在我的连接字符串中使用什么来修复它。
最佳答案
这里最常见的错误实际上是 部署 问题 - 即有 2 个不同的数据库文件在运行。特别是,通常您正在调试(等)的数据库文件通常是“bin/debug”或类似文件中的文件,并且每次构建时都会被覆盖。但是人们经常查看以查看更改的文件是他们项目树中的文件。
确保您正在查看正确的文件。
代码看起来不错;参数仍然是参数这一事实完全符合预期并且是正确的。如果你想要一种验证插入的简单方法,那么只需检查
SELECT COUNT(1) FROM Sales
插入前后;我预计它会增加。
同时检查您是否正在关闭并干净地处理连接(以防这只是一个在进程终止之前没有写入的缓冲更改)。 sc
和cmd
都是IDisposable
,所以你应该真正使用using
:
using(SqlCeConnection sc = new SqlCeConnection(
SalesTracker.Properties.Settings.Default.salesTrackerConnectionString))
using(SqlCeCommand cmd = new SqlCeCommand(
"INSERT INTO Sales VALUES(@itmId, @itmNm,@fstNm, @date,@prft, @commision)",
sc))
{
cmd.Parameters.AddWithValue("@itmId", workingItem.ItemId);
cmd.Parameters.AddWithValue("@itmNm", workingItem.ItemName);
cmd.Parameters.AddWithValue("@fstNm", logedSalesmen.ID);
cmd.Parameters.AddWithValue("@date",
DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
cmd.Parameters.AddWithValue("@prft", workingItem.Profit);
cmd.Parameters.AddWithValue("@commision", workingItem.Commision);
sc.Open();
cmd.ExecuteNonQuery();
}
关于c# - sql语句没有将任何数据保存到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13006989/