【问题标题】:Insert into SQL Server table using C#使用 C# 插入 SQL Server 表
【发布时间】:2020-08-02 10:37:02
【问题描述】:

我正在使用以下代码将一些数据插入到我的 SQL Server 表中。没有显示任何错误,但表没有插入值。它有什么问题?

string sqlTxt1 = "INSERT INTO Users (ChatId , UserName) VALUES (@ChatId, @from)";

SqlCommand cmd1 = new SqlCommand(sqlTxt1, con);
cmd1.Parameters.AddWithValue("@ChatId", 12345);
cmd1.Parameters.AddWithValue("@from", "usrnm");

con.Open();
cmd1.ExecuteNonQuery();
//int recordsAffected =cmd1.ExecuteNonQuery();
con.Close();

当我将代码放在一个按钮中并将表格中的ChatId设置为主键时,单击两次时出现错误,所以我认为代码是正确的,但是为什么表格没有在第一次点击中获取这些值?

【问题讨论】:

  • 你有两个列但只传递一个参数?
  • 抱歉,已更新。
  • 与您的问题无关,但您应该avoid AddWithValue
  • 好的,您已经知道点击两次的问题和primery key,但是,第二次点击的行为究竟应该是什么?如果记录已经存在则更新它?还是插入一个新的?

标签: c# sql-server database ado.net


【解决方案1】:

应该是string sqlTxt1 = "INSERT INTO Users (ChatId , UserName) VALUES (@ChatId, @from)";。您还需要传递@from

您插入的不是更新表。因此,当您第二次单击时,它会尝试再次将具有相同主键的记录插入表中。您不能在表中多次插入相同的主键值,这将违反主键。主键始终是唯一的。

【讨论】:

  • 我知道并更新了丢失的参数,我的意思是我单击两次以查看它是否考虑该错误。它也不会在第一次点击时更新表格。
  • 为什么要更新?这是插入命令而不是更新
  • 好的。它不插入。
  • 没有任何错误。
  • 我的数据库设置可能有问题?
猜你喜欢
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多