我是 C# 新手。我试图将数字保存到 SQL Server 数据库表(本地)中,但出现错误:
Cannot insert the value NULL into column
我的代码:
private void SaveBtn_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\fn1965\Desktop\Work\TESTDB\NumDB.mdf;Integrated Security=True;Connect Timeout=30");
conn.Open();
string insert_query = "INSERT into [NumericTable] (Num1, Num2, Total) VALUES (@Num1, @Num2, @Total)";
SqlCommand cmd = new SqlCommand(insert_query, conn);
cmd.Parameters.AddWithValue("@Num1", textBox1.Text);
cmd.Parameters.AddWithValue("@Num2", textBox2.Text);
cmd.Parameters.AddWithValue("@Total", textBox3.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Record saved");
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show("EROR:"+ ex.ToString());
}
}
表架构
最佳答案
您可以在图像中看到 Id
列是唯一不支持 null 值的列。由于该列不是标识,并且您没有在插入中提供值,因此 INSERT 将失败并出现给定的异常。此代码将起作用(仅当已经没有 Id = 1 的记录时):
string insert_query = "INSERT into [NumericTable] (Num1,Num2,Total, Id) Values (@Num1,@Num2,@Total, @id)";
SqlCommand cmd = new SqlCommand(insert_query, conn);
cmd.Parameters.AddWithValue("@Num1", textBox1.Text);
cmd.Parameters.AddWithValue("@Num2", textBox2.Text);
cmd.Parameters.AddWithValue("@Total", textBox3.Text);
cmd.Parameters.AddWithValue("@Id", 1);
cmd.ExecuteNonQuery();
我认为这显然不是所需的功能。您应该做的是将 Id 列设置为 Identity = true 或在插入中设置一个值。
我还鼓励您不要使用 AddWithValue
方法,因为它可能会导致您出现一些不良问题。您可以在这里阅读更多信息:https://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/
关于c# - 我无法使用 C# 将数据保存到 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54012376/