当我尝试通过我创建的软件将一些数据保存到我的sql(express)时出现此错误。
System.Data.dll中发生了未处理的“System.InvalidOperationException”类型异常。 附加信息:ExecuteNonQuery:尚未初始化Connection属性。
这是我的代码:
private void save_medicine_Click(object sender, EventArgs e)
{
cn.Open();
if (nameBox.Text != "" & companyBox.Text != "" & categoryBox.Text != "" &
amountBox.Text != "" & restockBox.Text != "" & buyBox.Text != "" &
sellBox.Text != "" & qualityComboBox.Text !="" )
{
cmd.CommandText = "insert into drug_info (name,company_id,category,
expiration_date,stock_level,
critical_level_drug,cost_buy,cost_sell,drug_quality)
values ('"+nameBox.Text+"','"+companyBox.Text+"','"+
categoryBox.Text+"','"+dateTimePicker1+"','"+amountBox+"','"
+restockBox+"','"+buyBox+"','"+sellBox+"','"
+qualityComboBox+"')";
cmd.ExecuteNonQuery();
cmd.Clone();
}
}
}
答案 0 :(得分:0)
cn
中有一个类变量cn
和一个局部变量rMedecine_reg_load
。这似乎不对。
错误只是意味着您在为其分配连接之前尝试使用cmd
。
答案 1 :(得分:0)
尝试这样
if (nameBox.Text != "" & companyBox.Text != "" & categoryBox.Text != "" & amountBox.Text != "" & restockBox.Text != "" & buyBox.Text != "" & sellBox.Text != "" & qualityComboBox.Text !="" )
{
string sql = "insert into drug_info (name,company_id,category,expiration_date,stock_level,critical_level_drug,cost_buy,cost_sell,drug_quality) values ('"+nameBox.Text+"','"+companyBox.Text+"','"+categoryBox.Text+"','"+dateTimePicker1+"','"+amountBox+"','"+restockBox+"','"+buyBox+"','"+sellBox+"','"+qualityComboBox+"')";
SqlCommand cmd = new SqlCommand(sql,cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
MessageBox.Show("Τα στοιχεία καταχωρήθηκαν στη Βάση");
}
这应该可行..虽然我不知道为什么像“amountBox”和“buyBox”这样的值没有.Text附加到他们身上。我不知道这些值来自哪里,但如果它们是文本框,您可能需要添加.Text。如果它们是,并且您尝试将它们插入到数据库中,那么您将收到错误,因为您无法在数据库中插入具有“Textbox”类型的内容。
答案 2 :(得分:0)
首先:使用参数。你可以阅读它们here。
另一件事是这一行:
cmd.Clone();
我打赌你想要关闭命令。但是没有办法关闭SqlCommand。只需删除该行。
你还应该用其他答案中提到的2个连接清理乱七八糟的东西。