0

当我尝试通过我创建的软件将一些数据保存到我的 sql (express) 时出现此错误。

System.Data.dll 中出现“System.InvalidOperationException”类型的未处理异常。附加信息:ExecuteNonQuery:连接属性尚未初始化。

这是我的代码:

    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();

        }
    }
}
4

3 回答 3

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。如果是这样,并且您尝试将它们插入到数据库中,则会出现错误,因为您无法在数据库中插入具有“文本框”类型的内容。

于 2012-05-27T11:26:38.330 回答
0

你有一个类变量和cn一个局部变量cnrMedecine_reg_load这似乎不对。

cmd该错误仅表示您在为其分配连接之前尝试使用。

于 2012-05-27T11:20:30.560 回答
0

首先:使用参数。您可以在此处阅读有关它们的信息。

另一件事是这一行:

cmd.Clone();

我打赌你想关闭命令。但是没有办法关闭 SqlCommand。只需删除该行。

如其他答案中所述,您还应该使用 2 个连接清理混乱。

于 2012-05-27T11:31:02.463 回答