Windows窗体应用程序中的更新语句不起作用?

时间:2015-04-07 03:22:13

标签: c# sql-server

在我的Windows窗体应用程序中,我将文本框放在一个组框中,如果文本框为空,则使用以下代码将“N / A”添加到文本框中。

foreach (Control t in groupBox8.Controls)
                    {
                        if (t is TextBox)
                        {
                            if (t.Text == "")
                                t.Text = "N/A";
                            }
                    }

我正在尝试使用以下代码更新现有记录:

SqlCommand cmd = new SqlCommand("UPDATE semester set paper1_name=@paper1_name, paper1_code=@paper1_code, paper1_marks=@paper1_marks, paper2_name=@paper2_name, paper2_code=@paper2_code, paper2_marks=@paper2_marks, paper3_name=@paper3_name, paper3_code=@paper3_code, paper3_marks=@paper3_marks, paper4_name=@paper4_name, paper4_code=@paper4_code, paper4_marks=@paper4_marks, paper5_name=@paper5_name, paper5_code=@paper5_code, paper5_marks=@paper5_marks, paper6_name=@paper6_name, paper6_code=@paper6_code, paper6_marks=@paper6_marks  where course=@course and semester=@semester");
                    cmd.Connection = con;
                    cmd.Parameters.AddWithValue("@course", "ABC");
                    cmd.Parameters.AddWithValue("@semester", 1);
                    cmd.Parameters.AddWithValue("@paper1_name", textBox190.Text);
                    cmd.Parameters.AddWithValue("@paper1_code", textBox188.Text);
                    if (textBox186.Text == "N/A")
                        cmd.Parameters.AddWithValue("@paper1_marks", 0);
                    else
                        cmd.Parameters.AddWithValue("@paper1_marks", textBox186.Text);
                    cmd.Parameters.AddWithValue("@paper2_name", textBox189.Text);
                    cmd.Parameters.AddWithValue("@paper2_code", textBox187.Text);
                    if (textBox185.Text == "N/A")
                        cmd.Parameters.AddWithValue("@paper2_marks", 0);
                    else
                        cmd.Parameters.AddWithValue("@paper2_marks", textBox185.Text);
                    cmd.Parameters.AddWithValue("@paper3_name", textBox183.Text);
                    cmd.Parameters.AddWithValue("@paper3_code", textBox181.Text);
                    if (textBox180.Text == "N/A")
                        cmd.Parameters.AddWithValue("@paper3_marks", 0);
                    else
                        cmd.Parameters.AddWithValue("@paper3_marks", textBox180.Text);
                    cmd.Parameters.AddWithValue("@paper4_name", textBox177.Text);
                    cmd.Parameters.AddWithValue("@paper4_code", textBox176.Text);
                    if (textBox175.Text == "N/A")
                        cmd.Parameters.AddWithValue("@paper4_marks", 0);
                    else
                        cmd.Parameters.AddWithValue("@paper4_marks", textBox175.Text);
                    cmd.Parameters.AddWithValue("@paper5_name", textBox172.Text);
                    cmd.Parameters.AddWithValue("@paper5_code", textBox171.Text);
                    if (textBox170.Text == "N/A")
                        cmd.Parameters.AddWithValue("@paper5_marks", 0);
                    else
                        cmd.Parameters.AddWithValue("@paper5_marks", textBox170.Text);
                    cmd.Parameters.AddWithValue("@paper6_name", textBox179.Text);
                    cmd.Parameters.AddWithValue("@paper6_code", textBox174.Text);
                    if (textBox169.Text == "N/A")
                        cmd.Parameters.AddWithValue("@paper6_marks", 0);
                    else
                        cmd.Parameters.AddWithValue("@paper6_marks", textBox169.Text);
                    try
                    {
                        con.Open();

                        if (cmd.ExecuteNonQuery() > 0)
                        {
                            chk = 1;
                        }
                        else
                        {
                            label25.Text = "[Error: Cannot save the data]";
                            label25.Visible = true;
                            chk = 0;

                        }

                    }
                    catch (Exception ex)
                    {

                        MessageBox.Show(ex.Message);

                    }
                    finally
                    {
                        con.Close();
                        cmd.Dispose();
                    }

但我在这方面遇到了问题。每次其他部分执行显示错误消息。

if (cmd.ExecuteNonQuery() > 0)
                            {
                                chk = 1;
                            }
                            else
                            {
                                label25.Text = "[Error: Cannot save the data]";
                                label25.Visible = true;
                                chk = 0;

                            }

在数据库(学期表)中,也没有记录正在更新。请帮忙。我正在使用sql server。

2 个答案:

答案 0 :(得分:0)

而不是使用此代码
cmd.Parameters.AddWithValue("@course", "ABC");

使用
cmd.Parameters.Add("@ParameterName",SqlDbType.VarChar).Value = textboxName.text;

在您的代码中,我可以看到您将值0(这是一个整数)传递给某些参数,但它在您的数据库中接受了VarChar或Char。 附:
在" SqlDBType.VarChar"确保数据类型与数据库中的数据类型相同。

答案 1 :(得分:0)

大家都感谢您的努力。 cmd.Parameters.AddWithValue("@course", "ABC");出错。

实际上在我的项目中,我在本声明中使用了全局变量课程(例如cmd.Parameters.AddWithValue("@course", course);)。我试图在这里发布这个问题时简化代码,并用我知道的值替换变量课程的值。但我忘了我在另一个函数中改变了变量课程的价值。这就是为什么,sql查询的条件不满意,也没有给出任何异常/错误。