你好,希望大家都好:(
我是一年级的学生,我们刚开始学习windows窗体。我想使用按钮将数据从DataGridview
更新到我的数据库中,但我必须在数据处理程序class
中创建一个更新方法,并在表单加载中调用它,这是我迄今为止所尝试的。
DataHandler类:
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);
这就是初始化SqlCommand
:的方法
new SqlCommand(queryString, connection);
您错过了传递任何参数。您需要将updateQuery
作为queryString
传递,还需要一个适当的连接字符串。
我认为将您带到这里的实际问题是SQL无效的几个关键问题。不过,话虽如此,关于SQL注入的评论是绝对正确的,您最好了解参数化SQL。
首先要指出的是,您的参数需要以逗号分隔才能成为有效的SQL。第二件事是,您需要用WHERE子句标识要更新的行,您当前的SQL语句将更新表中的每一条记录,而不是一条记录。基本上,你的";数字";字段不应在要更新的列列表中,它需要移动到WHERE子句中。
以下并不是您家庭作业的完整解决方案,而是已更正问题的SQL代码片段。在学习过程中,你可以做一件事来帮助自己,那就是尝试让SQL在程序的外部编译和运行,然后在有了工作语句后在程序中实现它。
更新学生集name='John',姓='Doe'WHERE number=1