从C#表格输入数据

时间:2014-04-19 03:43:09

标签: c# sql

我无法将数据从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);
        }

1 个答案:

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