我的代码中有什么问题?
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\extract step one\extract1.accdb;Persist Security Info=True";
String kerdes = Convert.ToString(textBox1.Text);
String valaszok = Convert.ToString(textBox2.Text);
OleDbCommand cmd = new OleDbCommand("INSERT into extract (kerdes, valaszok) Values(@kerdes, @valaszok)");
cmd.Connection = conn;
conn.Open();
if (conn.State == ConnectionState.Open)
{
cmd.Parameters.Add("@kerdes", OleDbType.VarChar).Value = kerdes;
cmd.Parameters.Add("@valaszok", OleDbType.VarChar).Value = valaszok;
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Data Added");
conn.Close();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Source);
conn.Close();
}
}
else
{
MessageBox.Show("Connection Failed");
}
}
当我点击按钮时,它会显示:
Microsoft Office Access数据库引擎
我用Access创建了数据库。有什么想法吗?
答案 0 :(得分:5)
OleDbCommand
不支持命名参数 - 请改用?
:
OleDbCommand cmd = new OleDbCommand("INSERT into extract (kerdes, valaszok) Values(?, ?)");
我还会在using
块中包装命令和连接,以确保正确处理资源。
答案 1 :(得分:0)
您需要将参数更改为:
cmd.Parameters.AddWithValue("@kerdes", kerdes);
cmd.Parameters.AddWithValue("@valaszok", valaszok);
除了上述将您的查询更改为:
的评论之外,还需要执行此操作OleDbCommand cmd = new OleDbCommand("INSERT into extract (kerdes, valaszok) Values(?, ?)");