C# UPDATE语句,用于使用C更新MySQL数据库中的特定行#
我在数据库中将ID设置为每个表的主键,我不知道如何编写代码来更新C#Windows窗体应用程序中表“clan”中的某些行 我以前的代码容易受到SQL注入的攻击,SQL注入也不会更新表,但我放弃了该代码并对其进行了更改 这是我试图更新某些表的代码。 在这里您可以看到我的应用程序设计和表创建C# UPDATE语句,用于使用C更新MySQL数据库中的特定行#,c#,mysql,workbench,C#,Mysql,Workbench,我在数据库中将ID设置为每个表的主键,我不知道如何编写代码来更新C#Windows窗体应用程序中表“clan”中的某些行 我以前的代码容易受到SQL注入的攻击,SQL注入也不会更新表,但我放弃了该代码并对其进行了更改 这是我试图更新某些表的代码。 在这里您可以看到我的应用程序设计和表创建 try { connection = new MySqlConnection(); connection.ConnectionSt
try
{
connection = new MySqlConnection();
connection.ConnectionString = conString;
connection.Open();
string Query="UPDATE clan SET ime=@ime, prezime=@prezime, dob=@dob, oib=@oib";
using (MySqlCommand command = new MySqlCommand(Query, connection))
{
command.Parameters.AddWithValue("@ime", ime);
command.Parameters.AddWithValue("@prezime", prezime);
command.Parameters.AddWithValue("@dob", datum_rodenja);
command.Parameters.AddWithValue("@oib", oib);
command.ExecuteNonQuery();
}
MessageBox.Show("Uspješno ažuriran član!");
DialogResult dialogResult = MessageBox.Show(" Želite li ažurirati još jednog člana? ", "", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
this.Focus();
}
else
{
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
只需在SQL语句中添加一个
where
子句:UPDATE-clan-SET-ime=@ime,prezime=@prezime,dob=@dob,oib=@oib-where-id=@id
@haldo我添加了该子句,但它给出了在命令执行过程中遇到的致命错误。我不知道如何让我的应用程序使用id(主键、非空、唯一索引和自动递增都标记在表中)来知道要更新哪个成员。@这是一个亲切的响应;我也会删除我的评论。我经常看到类似的评论,所以我考虑写一篇关于它的文章。归根结底,MySQL的文本协议只是线上的字符串。无论您如何在代码中键入参数值,它们都会以123、'abc'
等形式发送。无论如何,服务器会解析它们并根据列类型检查它们。与SQL Server不同,没有“类型”信息通过网络发送,因此设置参数类型毫无意义,AddWithValue
是最有效的方法。您是否有要更新的行的id?如果是这样,请使用@haldo的代码确保添加额外的参数command.Parameters.AddWithValue(“@id”,id))代码>@BradleyGrainger:我认为那篇文章中的线表示方面是一种误导。AddWithValue
(至少对于Sql提供程序)的真正问题在于如何检测提供程序对象(预连线)中的数据类型(包括长度)。重用命令及其参数以使用不同的值重复命令是一个有效的用例,如果第一个值比后面的值短,则可能会出现严重错误。