首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# "InvalidOperationException : ExecuteNonQuery“异常

C# "InvalidOperationException : ExecuteNonQuery“异常
EN

Stack Overflow用户
提问于 2012-05-27 11:08:38
回答 3查看 8.2K关注 0票数 0

当我试图通过我所创建的软件将一些数据保存到我的sql (express)中时,我出现了这个错误。

System.InvalidOperationException类型的未处理异常发生在System.Data.dll中。附加信息: ExecuteNonQuery: Connection属性尚未初始化。

以下是我的代码:

代码语言:javascript
复制
    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();

        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-27 11:20:30

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

这个错误仅仅意味着在给它分配连接之前,您正在尝试使用cmd

票数 0
EN

Stack Overflow用户

发布于 2012-05-27 11:26:38

像这样试试

代码语言:javascript
复制
     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“类型的内容。

票数 0
EN

Stack Overflow用户

发布于 2012-05-27 11:31:02

首先:使用参数。你可以读到关于他们的这里

另一件事是这句话:

代码语言:javascript
复制
cmd.Clone();

我打赌你想关闭指挥部。但是没有办法关闭一个SqlCommand。只要把线移开。

你也应该像其他答案中提到的那样,用两个连接来清理混乱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10773493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档