我在我的sql server上创建了该表:
create table Empolyee(
ESSN int not null,
EFirstName varchar(20) not null ,
ELastName varchar(20) not null,
EJob varchar(20),
EBDate date,
ESalary int,
primary key(ESSN));
并且在C#中我尝试使用该代码将数据添加到数据库:
SqlConnection sqc = new SqlConnection("Data Source=.\\;Initial Catalog=DB;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = new SqlCommand("INSERT INTO Empolyee VALUES (@ESSN,@EFirstName,@ELastName,@EJob,@EBDate,@ESalary)", sqc);
da.SelectCommand.Parameters.Add("@ESSN", SqlDbType.Int).Value = textBox1.Text;
da.SelectCommand.Parameters.Add("@EFirstName", SqlDbType.VarChar).Value = textBox2.Text;
da.SelectCommand.Parameters.Add("@ELastName", SqlDbType.VarChar).Value = textBox3.Text;
da.SelectCommand.Parameters.Add("@EJob", SqlDbType.VarChar).Value = textBox4.Text;
da.SelectCommand.Parameters.Add("@EBDate", SqlDbType.Date).Value = maskedTextBox1.Text;
da.SelectCommand.Parameters.Add("@ESalary", SqlDbType.Int).Value = textBox5.Text;
// open connection
sqc.Open();
// excute the command
da.InsertCommand.ExecuteNonQuery();
// close connection
sqc.Close();
运行时出现错误:对象引用未设置为对象实例或System.NullReferenceException:对象引用未设置为对象实例。
答案 0 :(得分:2)
您尚未向da.InsertCommand
分配任何内容 - 而是将INSERT
命令放入da.SelectCommand
...只需将所有引用从da.SelectCommand
更改为{{1}您在问题中显示的代码:
da.InsertCommand
顺便说一句,您不需要任何 da.InsertCommand = new SqlCommand("INSERT INTO Empolyee VALUES (@ESSN,@EFirstName,@ELastName,@EJob,@EBDate,@ESalary)", sqc);
da.InsertCommand.Parameters.Add("@ESSN", SqlDbType.Int).Value = textBox1.Text;
da.InsertCommand.Parameters.Add("@EFirstName", SqlDbType.VarChar).Value = textBox2.Text;
da.InsertCommand.Parameters.Add("@ELastName", SqlDbType.VarChar).Value = textBox3.Text;
da.InsertCommand.Parameters.Add("@EJob", SqlDbType.VarChar).Value = textBox4.Text;
da.InsertCommand.Parameters.Add("@EBDate", SqlDbType.Date).Value = maskedTextBox1.Text;
da.InsertCommand.Parameters.Add("@ESalary", SqlDbType.Int).Value = textBox5.Text;
或SqlDataAdapter
来执行DataSet
- 只能通过INSERT
和SqlConnection
来完成。
答案 1 :(得分:2)
您正在执行以下行:
da.InsertCommand.ExecuteNonQuery()
但你是init SelectCommand
尝试替换以下代码:
da.InsertCommand= new SqlCommand("INSERT INTO Empolyee VALUES (@ESSN,@EFirstName,@ELastName,@EJob,@EBDate,@ESalary)", sqc);
da.InsertCommand.Parameters.Add("@ESSN", SqlDbType.Int).Value = textBox1.Text;
da.InsertCommand.Parameters.Add("@EFirstName", SqlDbType.VarChar).Value = textBox2.Text;
da.InsertCommand.Parameters.Add("@ELastName", SqlDbType.VarChar).Value = textBox3.Text;
da.InsertCommand.Parameters.Add("@EJob", SqlDbType.VarChar).Value = textBox4.Text;
da.InsertCommand.Parameters.Add("@EBDate", SqlDbType.Date).Value = maskedTextBox1.Text;
da.InsertCommand.Parameters.Add("@ESalary", SqlDbType.Int).Value = textBox5.Text;