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

にクラス変数cnとローカル変数cnがありrMedecine_reg_loadます。それは正しくないようです。

エラーはcmd、接続を割り当てる前に使用しようとしていることを意味します。

于 2012-05-27T11:20:30.560 に答える
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

まず第一に:パラメータを使用します。あなたはここでそれらについて読むことができます。

もう1つは、この行です。

cmd.Clone();

コマンドを閉じたいと思います。しかし、SqlCommandを閉じる方法はありません。行を削除するだけです。

また、他の回答で述べられているように、2つの接続で混乱をクリーンアップする必要があります。

于 2012-05-27T11:31:02.463 に答える