为什么我的c#insert查询不起作用?

时间:2015-03-11 18:16:56

标签: c# database oledb

我的代码中有什么问题?

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创建了数据库。有什么想法吗?

2 个答案:

答案 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(?, ?)");