【发布时间】:2011-12-03 20:39:35
【问题描述】:
我使用以下代码在 SQL Server Management Studio 中创建了一个表:
CREATE TABLE contact(
ID INT IDENTITY NOT NULL,
FIRSTNAME VARCHAR(100),
LASTNAME VARCHAR(100)
)
在 C# 中我使用了以下代码:
SqlConnection sc = new SqlConnection("Data Source=.\\SQLSERVER; Initial Catalog=BOSS; Integrated Security=TRUE");
SqlDataAdapter sd = new SqlDataAdapter();
sd.InsertCommand = new SqlCommand("INSERT INTO contact VALUES(@ID, @FIRSTNAME, @LASTNAME)");
sd.InsertCommand.Parameters.Add("@ID", SqlDbType.Int).Value = textBox1.Text;
sd.InsertCommand.Parameters.Add("@FIRSTNAME", SqlDbType.VarChar).Value = textBox2.Text;
sd.InsertCommand.Parameters.Add("@LASTNAME", SqlDbType.VarChar).Value = textBox3.Text;
sc.Open();
sd.InsertCommand.ExecuteNonQuery();
sc.Close();
但是当我将值添加到数据库时,我得到了错误:
“ExecuteNonQuery:连接属性尚未初始化”
我通过将sc 添加到我的第一个insertcommand 来修复它,但是当我运行该程序时,我又遇到了另一个错误:
表 'contact' 中标识列的显式值只能 在使用列列表并且 IDENTITY_INSERT 为 ON 时指定。
【问题讨论】:
-
您应该将连接创建包装在
using语句中。 -
您没有将 DataAdapter 连接到连接
-
你为什么直接使用
DataAdapter而不是Command? -
我遇到了另一个问题:只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表 'contact' 中的标识列指定显式值。
-
如果您想得到答案,请将您的新问题放在一个新问题中。
标签: c# sql sql-server