我有一个数据库连接,其中我将数据插入到具有2列的表中,即id
,first_name
,last_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失败
答案 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字段应修改如下所示
答案 2 :(得分:0)
尝试this。可以使用此语句选择性地启用或禁用Identity Columns的行为。
如果您的标识列配置正确,那么这是唯一不符合预期行为的逻辑解释
SET IDENTITY_INSERT [dbo]。[data_table] ON;
但是,您的正确性断言更有可能存在缺陷,并且您尚未正确配置标识列。
答案 3 :(得分:0)
删除该表以及旧表的所有旧副本并使用建议的Identity(1,1)
创建新表解决了问题