我使用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");
}
}
}
答案 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(以及其他内容)。