当我试图通过我所创建的软件将一些数据保存到我的sql (express)中时,我出现了这个错误。
System.InvalidOperationException类型的未处理异常发生在System.Data.dll中。附加信息: 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();
}
}
}发布于 2012-05-27 11:20:30
在cn中有一个类变量cn和一个局部变量cn。这似乎不对。
这个错误仅仅意味着在给它分配连接之前,您正在尝试使用cmd。
发布于 2012-05-27 11:26:38
像这样试试
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“类型的内容。
发布于 2012-05-27 11:31:02
首先:使用参数。你可以读到关于他们的这里。
另一件事是这句话:
cmd.Clone();我打赌你想关闭指挥部。但是没有办法关闭一个SqlCommand。只要把线移开。
你也应该像其他答案中提到的那样,用两个连接来清理混乱。
https://stackoverflow.com/questions/10773493
复制相似问题