每次在表中插入记录失败

时间:2014-11-10 10:24:50

标签: c# sql-server database

我有一个数据库连接,其中我将数据插入到具有2列的表中,即idfirst_namelast_name。 以下是代码:

    private void Insert_Click(object sender, EventArgs e)
    {
        try
        {

            String query = "INSERT INTO  data_table (first_name,last_name) VALUES (@f_name,@l_name)";

            using (SqlConnection connection1 = new SqlConnection(
                                      Properties.Settings.Default.DatabaseConnection))

            using (SqlCommand insertCommand = new SqlCommand(query, connection1))
            {
                //a shorter syntax to adding parameters
              //  insertCommand.Parameters.Add("@id", SqlDbType.Int).Value = 1;
                insertCommand.Parameters.Add("@f_name", SqlDbType.NChar).Value = "JAVED";

                insertCommand.Parameters.Add("@l_name", SqlDbType.NChar).Value = "GHAMJN";

                //make sure you open and close(after executing) the connection
                connection1.Open();
                insertCommand.ExecuteNonQuery();
                connection1.Close();

                MessageBox.Show("Record inserted. Please check your table data. :)");

            }

        }
        catch (Exception err)
        {

            MessageBox.Show(err.Message);

        }
  }

以下是T-SQL脚本:

CREATE TABLE [dbo].[data_table] (
[Id]         INT        NOT NULL IDENTITY,
[first_name] NCHAR (10) NULL,
[last_name]  NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
 );

问题是由id创建的:我已将其设置为自动增量。 当我点击插入按钮时,一个MessageBox弹出说:

  

无法将值NULL插入列' Id',表' C:\ Users ....... \ Database1.MDF.dbo.data_table;列不包含允许null.INSERT失败

4 个答案:

答案 0 :(得分:1)

将标识种子和增量值添加到表格中......

CREATE TABLE [dbo].[data_table] (
[Id]         INT        NOT NULL IDENTITY(1,1),
[first_name] NCHAR (10) NULL,
[last_name]  NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
 );

答案 1 :(得分:0)

您的Id字段应修改如下所示

enter image description here

答案 2 :(得分:0)

尝试this。可以使用此语句选择性地启用或禁用Identity Columns的行为。

如果您的标识列配置正确,那么这是唯一不符合预期行为的逻辑解释

SET IDENTITY_INSERT [dbo]。[data_table] ON;


但是,您的正确性断言更有可能存在缺陷,并且您尚未正确配置标识列。

答案 3 :(得分:0)

删除该表以及旧表的所有旧副本并使用建议的Identity(1,1)创建新表解决了问题