我在这里搜索了我的问题,但我找不到它。我正在使用Microsoft VS 2010 C#。
这是我的代码:
private OleDbConnection myCon;
public Form5()
{
myCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|ForeignWorkerinfo.accdb");
InitializeComponent();
}
private void Form5_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'foreignWorkerinfoDataSet.FWinFO' table. You can move, or remove it, as needed.
this.fWinFOTableAdapter.Fill(this.foreignWorkerinfoDataSet.FWinFO);
}
private void button1_Click(object sender, EventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = myCon;
cmd = new OleDbCommand("INSERT INTO [FWinFO] ([ID], [Name], [Gender], [Date of Birth], [Country], [Date of Expire], [Passport No], [Working Place]) VALUES (?, ?, ?, ?, ?, ?, ?, ?);");
cmd.Parameters.AddWithValue("@id", textBox8.Text);
cmd.Parameters.AddWithValue("@name", textBox1.Text);
cmd.Parameters.AddWithValue("@gender", textBox2.Text);
cmd.Parameters.AddWithValue("@dob", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@country", textBox4.Text);
cmd.Parameters.AddWithValue("@doe", dateTimePicker2.Value);
cmd.Parameters.AddWithValue("@passport", textBox6.Text);
cmd.Parameters.AddWithValue("@workplace", textBox7.Text);
cmd.ExecuteNonQuery();
myCon.Close();
}
有谁可以告诉我为什么连接属性尚未初始化?
答案 0 :(得分:3)
您有两个错误,即您声明的错误,以及修复第一个错误后将出现的错误:
第一个是您通过再次调用new来覆盖Connection
上cmd
属性的设置。要么做一个新的,要么设置查询文本属性。
下一个错误是:
您必须致电myCon.Open
进行ExecuteNonQuery()
来电。您无法对未打开的连接执行查询。
您可以通过选中State
查看连接是否为Open
来检查连接是否已打开。
但是,我实际上建议按需创建连接,但这取决于代码。使用全局共享连接对象可以解决问题。但是,您可以缓存连接字符串。
答案 1 :(得分:1)
首先尝试使用myCon.Open()
答案 2 :(得分:1)
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = myCon;
cmd = new OleDbCommand("INSERT INTO [FWinFO] ([ID], [Name], [Gender], [Date of Birth], [Country], [Date of Expire], [Passport No], [Working Place]) VALUES (?, ?, ?, ?, ?, ?, ?, ?);");
上面的代码是正确的。问题是,您没有打开连接。请使用:
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = myCon;
myCon.Open();
cmd = new OleDbCommand("INSERT INTO [FWinFO] ([ID], [Name], [Gender], [Date of Birth], [Country], [Date of Expire], [Passport No], [Working Place]) VALUES (?, ?, ?, ?, ?, ?, ?, ?);");