尝试使用这些代码将数据添加到我的数据库中,但始终出现错误,是否有解决此问题的建议?对象引用未设置为对象的实例。
private void button1_Click(object sender, EventArgs e)
{
con = new SqlConnection("Data Source=GREGJAMES\\SQLEXPRESS;Initial Catalog=Hotel;Integrated Security=True");
con.Open();
cmd = new SqlCommand("INSERT INTO [Guest Info] (Guest, Phone, TypeOfRoom, CheckIn, CheckOut, NumberOfAdults, NumberOfChildren) VALUES (@Guest, @Phone, @TypeOfRoom, @CheckIn, @CheckOut, @NumberOfAdults, @NumberOfChildren)", con);
cmd.Parameters.Add("@Guest", textBox1.Text);
cmd.Parameters.Add("@Phone", textBox1.Text);
cmd.Parameters.Add("@TypeOfRoom", comboBox1.SelectedItem.ToString());
cmd.Parameters.Add("@CheckIn", dateTimePicker1.Value.ToString());
cmd.Parameters.Add("@CheckOut", dateTimePicker2.Value.ToString());
cmd.Parameters.Add("@NumberOfAdults", comboBox2.SelectedItem.ToString());
cmd.Parameters.Add("@NumberOfChildren", comboBox3.SelectedItem.ToString());
cmd.ExecuteNonQuery();
{
MessageBox.Show("Reserved!");
}
this.Close();
答案 0 :(得分:0)
con或cmd变量都为null,因为无法建立连接(这些行):
con = new SqlConnection("Data Source=GREGJAMES\\SQLEXPRESS;Initial
Catalog=Hotel;Integrated Security=True");
cmd = new SqlCommand("INSERT INTO [Guest Info] (Guest, Phone, TypeOfRoom, CheckIn, CheckOut, NumberOfAdults, NumberOfChildren) VALUES (@Guest, @Phone, @TypeOfRoom, @CheckIn, @CheckOut, @NumberOfAdults, @NumberOfChildren)", con);
检查您的数据库是否打开,如果在构造函数中键入这些字符串时出错,如果您看到异常详细信息,则可以看到引发异常的行,您将知道这是con还是cmd问题。 / p>
当您尝试调用空对象的方法时,会出现此异常。
编辑:我看到您说此行引发了错误:
cmd.Parameters.Add("@TypeOfRoom", comboBox1.SelectedItem.ToString());
这意味着comboBox提供了异常,这可能是因为您在单击按钮时未选择任何项目,因为未选择任何内容,因此对.ToString()的调用将引发null异常。像这样用try catch包围该部分:
try
{
cmd.Parameters.Add("@TypeOfRoom", comboBox1.SelectedItem.ToString());
}catch(Exception e)
{
//This code will be executed when the exception is thrown (when you
//haven't selected an item, so the selected item is null)
}
如果选择一个项目并单击按钮,但它仍然崩溃,则comboBox为null,您必须修复代码以确保其不为null。