“未处理的类型&System; .InvalidOperationException'发生在System.Data.dll“

时间:2014-07-25 12:35:47

标签: c# winforms oledb oledbconnection

我使用microsoft access 2013(数据库名称:kyt,表名:vg_info_table)。当我运行此代码时,它可以工作,但是当我从组合框中选择所选值并单击发送按钮(应该将值记录到我的数据库; vg_1字段)时,我收到错误(komut.ExecuteNonQuery();):

  

未处理的类型' System.InvalidOperationException'   发生在

     

System.Data.dll中

     

其他信息:ExecuteNonQuery:Connection属性没有   已初始化。

我的整个代码在这里;

namespace afeusdotnet
{

    public partial class verigirisekranisorular1 : UserControl {

    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=kyt.accdb;Persist Security Info=False;"); 

    DataTable tablo = new DataTable();
    OleDbDataAdapter adptr = new OleDbDataAdapter();
    OleDbCommand komut = new OleDbCommand();
    DataSet dset = new DataSet();
    verigirisekranisorular2 soru2 = new verigirisekranisorular2();

    public verigirisekranisorular1() {
        InitializeComponent();
    }

    void Listele(){  
        bag.Open();
        OleDbDataAdapter adptr = new OleDbDataAdapter("Select * From vg_info_table", bag);   
        adptr.Fill(tablo); 
        adptr.Dispose();
        bag.Close();
    }    

    private void button2_Click(object sender, EventArgs e) {

        if (comboBox1.Text.ToString() == "")
            MessageBox.Show("ilgili alanları doldurunuz");
        else {

               bag.Open();

               komut.CommandText = "INSERT INTO vg_info_table(vg_1) VALUES ('" + comboBox1.Text.ToString() + "')";
               komut.ExecuteNonQuery();

               bag.Close();    
               Listele();
               MessageBox.Show("kaydınız tamamlandı diğer sayfaya geçiniz");
           }
       }
   }

1 个答案:

答案 0 :(得分:1)

您必须将连接分配给OleDbCommand

komut.Connection = bag;
komut.CommandText = "INSERT INTO vg_info_table(vg_1) VALUES ('" + comboBox1.Text.ToString() +"')";
bag.Open();
komut.ExecuteNonQuery();

除此之外,您应该使用sql-parameters而不是字符串连接来防止sql-injection(以及其他内容)。