从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);
        }

从C#窗体输入数据

问题:您将更新查询中的参数用单引号括起来。

解决方案:使用参数化查询时,不应将参数括在单引号内,因此需要在更新查询中删除参数周围的单引号。

试试这个:

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!");