从C#窗体输入数据
本文关键字:数据 输入 窗体 | 更新日期: 2023-09-27 17:59:02
我在从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);
}
问题:您将更新查询中的参数用单引号括起来。
解决方案:使用参数化查询时,不应将参数括在单引号内,因此需要在更新查询中删除参数周围的单引号。
试试这个:
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!");