我无法将数据从C#表格更新到表格中。有人能告诉我我做错了什么。它没有给我一个错误,并说它已成功提交。我的数据库显示没有变化。
try
{
string cmdstring = "UPDATE Test SET COLLECTION_DATE = '@date', SPECIMANID = '@spec', TEST_RESULT = '@result', SUBSTANCE_RESULT = '@substance' WHERE PEOPLESOFT_EMPL_ID = @empID ;";
using (OleDbCommand cmd = new OleDbCommand(cmdstring, con))
{
cmd.Parameters.Add("@date", OleDbType.Date).Value = dateTimePicker1.Value;
cmd.Parameters.Add("@spec", OleDbType.Char).Value = textBoxSpec.Text;
cmd.Parameters.Add("@result", OleDbType.Char).Value = comboBoxResult.Text;
cmd.Parameters.Add("@substance", OleDbType.Char).Value = comboBoxSubstance.Text;
cmd.Parameters.Add("@empID", OleDbType.Char).Value = textBoxID.Text;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Submitted Successfully");
}
}
catch (Exception ex)
{
MessageBox.Show("Failed due to " + ex.Message);
}
答案 0 :(得分:0)
问题:您将更新查询中的参数括在单引号内。
解决方案,在使用参数化查询时,您不应将参数括在单引号内,因此您需要删除更新查询中参数周围的单引号。
试试这个:
string cmdstring = "UPDATE Test SET COLLECTION_DATE = @date, SPECIMANID = @spec,
TEST_RESULT = @result, SUBSTANCE_RESULT = @substance WHERE PEOPLESOFT_EMPL_ID =
@empID ;";
建议:您正在显示成功案例而不检查查询执行状态。
我建议您在显示成功消息之前验证ExecuteNonQuery()
返回值。
来自MSDN:ExecuteNonQuey()
对连接执行Transact-SQL语句,返回 受影响的行数。
试试这个:
int rowsUpdated = cmd.ExecuteNonQuery();
if(rowsUpdated > 0)
MessageBox.Show("Records Inserted Successfully!");
else
MessageBox.Show("Insertion Failed!");