0

美好的一天,希望每个人都好:)

我是一年级学生,我们刚开始使用 Windows 窗体。我想DataGridview使用按钮将数据更新到我的数据库中,但我必须在数据处理程序中创建一个更新方法class并在我的表单加载中调用它,这是我迄今为止尝试过的。

数据处理类:

        public void UpdateStudent(int number, string name, string surname, string dob, string gender, int phone, string address)
    {
        try
        {
            //string updateQuery = @"UPDATE Student SET number='" + number + "'name='" + name + "'surname='" + surname + "'dob='" + dob + "'gender'" + gender + "'phone='" + phone + "'address='" + address + "'";
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.ExecuteNonQuery();
            MessageBox.Show("updated successfully....");
        }
        catch (Exception ex)
        {
            MessageBox.Show("not updated!", ex.Message); m
        }
        finally
        {
            conn.Close();
        }
    }

表单加载时的更新按钮:

  DataHandler dh = new DataHandler();

 dh.UpdateStudent(int.Parse(txtStuID.Text), txtStuName.Text, txtStuSurname.Text,txtStuDOB.Text,txtStuGender.Text, int.Parse(txtStuNo.Text), txtStuAddress.Text);
       
4

2 回答 2

0

这是您需要初始化的方式SqlCommand

new SqlCommand(queryString, connection);

您错过了传递任何参数。您需要传递updateQueryasqueryString并且还需要一个正确的连接字符串。

于 2021-11-03T16:23:43.133 回答
0

我认为将您带到这里的实际问题是您的 SQL 无效的几个关键问题。但是,话虽如此,关于 SQL 注入的评论是绝对正确的,您最好了解参数化 SQL。

跳出来的第一件事是您的参数需要用逗号分隔才能成为有效的 SQL。第二件事是您需要使用 WHERE 子句识别要更新的行,您当前的 SQL 语句将更新表中的每条记录,而不是一条记录。基本上,您的“数字”字段不应该在要更新的列列表中,它需要移动到您的 WHERE 子句中。

以下不是您的家庭作业的完整解决方案,而是已纠正问题的 SQL 片段。在你学习的过程中,你可以做的一件事是尝试让你的 SQL 在你的程序之外编译和运行,然后在你有一个工作语句后在你的程序中实现它。

UPDATE Student SET name = 'John', surname = 'Doe' WHERE number = 1

于 2021-11-03T16:32:13.783 回答