c# - sql语句没有将任何数据保存到表中

标签 c# sql parameters insert-into

每当我执行我的 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 

插入前后;我预计它会增加。

同时检查您是否正在关闭并干净地处理连接(以防这只是一个在进程终止之前没有写入的缓冲更改)。 sccmd 都是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/

相关文章:

c# - c#中的属性返回是什么意思?

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 删除 MySQL 中的重复行

parameters - Hyperopt:定义依赖于其他参数的参数

ruby-on-rails - Rails 反斜杠 unescape post 参数

c# - 温莎 WCF 设施工厂?

c# - 创建依赖于多个搜索字段的动态 LINQ 查询的最有效方法?

Angular 6 : Guard on all routes is not working

c# - 如何从串口读取和写入

sql - 如何获取结果集最后一行中所有列值的总和?