1

我正在使用 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();

*谢谢每一位 *

艾登的代码有效,但我应该更好地阅读托尼的帖子,因此我接受了他的回答(他先说了)

亲切的问候

再次感谢!

4

2 回答 2

2

您是否在与代码隔离的情况下执行 SQL 语句以确保其正常工作?

由于您没有发布表定义,可能是因为您没有在insert语句中指定字段。

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

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

更新

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

或者更改您的异常处理程序以捕获泛型Exception类型,以查看您是否甚至收到异常。

于 2012-05-17T21:05:20.843 回答
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();

这会奏效!

于 2012-05-17T22:42:42.680 回答