c# - 我无法使用 C# 将数据保存到 SQL 数据库

标签 c#

我是 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());
     }
}

表架构

enter image description here

最佳答案

您可以在图像中看到 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/

相关文章:

c# - zlib.Net的压缩解压问题

c# - GetOrAdd 新的与出厂性能

c# - 属性选择器 Expression<Func<T>>。如何获取/设置所选属性的值

c# - c#中的行位置

c# - 从字符串中获取第一个数字

c# - 仅在禁用项目上显示 WPF 工具提示

c# - LINQ 表达式帮助 Func TEntity、TType

c# - 在visual studio 2015下以x86启动一个asp.net core项目

C# Windows 应用程序开发人员 - 第 3 方工具

c# - 从 Asp.net webMethod 返回 Json 对象到 Ajax 调用