C# “C”;InvalidOperationException:ExecuteOnQuery";例外情况
当我试图通过我创建的软件将一些数据保存到我的sql(express)时,我出现了这个错误 System.Data.dll中发生类型为“System.InvalidOperationException”的未处理异常。 其他信息:ExecuteOnQuery:尚未初始化连接属性 以下是我的代码:C# “C”;InvalidOperationException:ExecuteOnQuery";例外情况,c#,sql-server-express,invalidoperationexception,C#,Sql Server Express,Invalidoperationexception,当我试图通过我创建的软件将一些数据保存到我的sql(express)时,我出现了这个错误 System.Data.dll中发生类型为“System.InvalidOperationException”的未处理异常。 其他信息:ExecuteOnQuery:尚未初始化连接属性 以下是我的代码: private void save_medicine_Click(object sender, EventArgs e) { cn.Open(); if (
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();
}
}
}
在
rMedecine\u reg\u load
中有一个类变量cn
和一个局部变量cn
。这似乎不对
该错误只是意味着在为其分配连接之前尝试使用cmd
。像这样尝试
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。如果是,并且您尝试将它们插入数据库,这样您将得到一个错误,因为您无法在数据库中插入具有“文本框”类型的内容。首先:使用参数。你可以读到他们 另一件事是这句话:
cmd.Clone();
我打赌你想关闭命令。但是没有办法关闭SqlCommand。把电话线拔下来
你也应该像其他答案中提到的那样,用2个连接来清理混乱 你为什么发布代码截图?根本不可读。请把代码贴出来。好的,我找到我该做的了。。现在我遇到了另一个错误,System.Data.dll中发生了类型为“System.Data.SqlClient.SqlException”的未处理异常。其他信息:从字符串转换日期和/或时间时转换失败。实际上,您可能应该使用cmd=cn.CreateCommand()或cmd=new SqlCommand(cn)初始化cmd(我认为语法是)如果我添加.text,它们在我的数据库中是int,它将停止。因此我试图找到我必须在末尾添加的内容。尝试转换.ToInt32(amountBox.text),这应该将它们解析为整数。dateTimepicker,这是一个jquery时间选择器吗?因为你也必须解析它,那么好吧,我已经按照你告诉我的方式添加了所有int@myDB将.ToInt32和我的decimal@myDBconvert.ToDouble但我现在遇到了此错误..其他信息:算术溢出错误转换varchar到数据类型numeric。但是我所有的nvarchar文本框都像这个文本框。text。。。