SQL - OleDbCommand不更新DB

时间:2012-05-17 20:59:05

标签: c# sql oledb ole

我正在使用OleBdCommand将记录插入Db,但更新永远不会持续。

这是代码

    public void InsertCandidate(XElement element, ref OleDbDataAdapter adapter, OleDbConnection sqlConnStr)
    {
        if (sqlConnStr.State == ConnectionState.Broken || sqlConnStr.State == ConnectionState.Closed)
            sqlConnStr.Open();

        try
        {
            string query = "Insert Into Candidate Values(@priKey, @Name, @LName, @Phone, @Add)";
            OleDbCommand InsertCandidate = new OleDbCommand(query, sqlConnStr);
            InsertCandidate.Parameters.AddWithValue("priKey", element.Attribute("CAND_NUM").Value);
            InsertCandidate.Parameters.AddWithValue("Name", element.Attribute("CAND_FNAME").Value);
            InsertCandidate.Parameters.AddWithValue("LName", element.Attribute("CAND_LNAME").Value);
            InsertCandidate.Parameters.AddWithValue("Phone", element.Attribute("CAND_PHONE").Value);
            InsertCandidate.Parameters.AddWithValue("Add", element.Attribute("CAND_ADDRESS").Value);
            InsertCandidate.ExecuteNonQuery();
        }
        catch (OleDbException ex)
        {
            MessageBox.Show("A Error occured whilst trying to execute the command.\n" + ex.Message);
        }
    }

不会产生异常,错误或异常!

任何建议

中号


我甚至试过这个。

            //InsertCandidate.ExecuteNonQuery();
            adapter.InsertCommand = InsertCandidate;
            adapter.InsertCommand.ExecuteNonQuery();

* 谢谢每一个人

艾登的代码已经完成,但我应该读过托尼的帖子更好,因此我接受了他的回答(他先说了)

亲切的问候

再次感谢!

2 个答案:

答案 0 :(得分:2)

您是否已经从代码中单独执行了SQL语句以确保它有效?

由于您没有在insert语句中指定字段,因此您尚未发布表定义。

我不是OLEDB专家,但我在网上找到的所有例子都使用问号代替参数。尝试这样的SQL语句:

string query = "Insert Into Candidate Values(?, ?, ?, ?, ?)";

<强>更新

查看OleDBCommand的文档,如果发生错误,它只会抛出InvalidOperationException而不是OleDbException。您应该添加此异常处理程序,看看是否能为您提供更多信息。

或者更改您的异常hanndler以捕获通用Exception类型,看看您是否得到异常。

答案 1 :(得分:1)

            string query = "Insert Into Candidate Values(?, ?, ?, ?, ?)";
            OleDbCommand InsertCandidate = new OleDbCommand(query, sqlConnStr);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_NUM").Value);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_FNAME").Value);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_LNAME").Value);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_PHONE").Value);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_ADDRESS").Value);
            //InsertCandidate.ExecuteNonQuery();
            adapter.InsertCommand = InsertCandidate;
            adapter.InsertCommand.ExecuteNonQuery();

这会有效!