我正在使用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();
* 谢谢每一个人
艾登的代码已经完成,但我应该读过托尼的帖子更好,因此我接受了他的回答(他先说了)
亲切的问候
再次感谢!
答案 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();
这会有效!