C# 更新mysql数据库会导致错误
我试图更新我的mysql数据库,但它没有工作,并向我显示了错误 守则:C# 更新mysql数据库会导致错误,c#,mysql,C#,Mysql,我试图更新我的mysql数据库,但它没有工作,并向我显示了错误 守则: string constring = "datasource=localhost;port=3306;username=root;password=root"; string Query = "update database.check set namethestore = '" + this.textBox65.Text + "' , checkername= '" + this.textBox66.Text + "'
string constring = "datasource=localhost;port=3306;username=root;password=root";
string Query = "update database.check set namethestore = '" + this.textBox65.Text + "' , checkername= '" + this.textBox66.Text + "' , where namethestore = '" + this.textBox65.Text + "' ;";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
MySqlDataReader myReader;
try
{
conDataBase.Open();
myReader = cmdDataBase.ExecuteReader();
MessageBox.Show("saved");
while (myReader.Read())
{
}
在
WHERE
条件之前的UPDATE
语句中有一个额外的,
,如下所示
update database.check set namethestore = '" + this.textBox65.Text + "' ,
checkername= '" + this.textBox66.Text + "' , where ...;
<--Here
这段代码有很多错误
MySqlDataReader
,其中包含MySqlCommand
的结果。由于使用了INSERT
语句,因此语句中没有返回的数据。您的语句只是从数据库中插入一个值
这就是为什么你应该使用。它只执行您的语句,对于INSERT
语句,它返回受影响的行数
你应该经常使用。这种类型的字符串连接对攻击是开放的
还可用于处理数据库连接
在WHERE
条件之前还有一个额外的逗号(,
)
using(MySqlConnection conn = new MySqlConnection(constring))
using(MySqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "update database.check set namethestore = @namethestore, checkername= @checkername where namethestore = @namethestore";
cmd.Parameters.AddWithValue(@namethestore, this.textBox66.Text);
cmd.Parameters.AddWithValue(@checkername, this.textBox65.Text);
conn.Open()
if(cmd.ExecuteNonQuery() > 0)
MessageBox.Show("saved");
}
在我的示例中,我使用了AddWithValue
,因为我不知道您的列类型,但您不使用它。改用它
阅读您遇到了什么错误?您将面临SQL注入。看看这个:@user3806048您构建了一个
UPDATE
语句,然后尝试阅读该语句。我认为您应该使用ExecuteNonQuery()
方法。您所说的@namethstore是什么意思,您的意思是像texbox1.txt这样的文本框的名称吗?@user3806048这些是您的值的占位符。@user3806048,不,这些是保存文本框值的参数。将这些参数传递给SQL查询。这避免了SQL注入攻击。在MSDN中阅读更多内容。我按照您的要求做了,但我仍然会出错,我的代码是:string Query=“update database.check set namethestore=”+this.textBox65.Text+”,checkername=“+this.textBox66.Text+”,where namethestore=”“+this.textBox65.Text+”:”;using(MySqlConnection conDataBase=new MySqlConnection(consting)){using(MySqlCommand cmdDataBase=new MySqlCommand(Query,conDataBase)){conDataBase.Open();cmdDataBase.CommandText=Query;cmdDataBase.Parameters.Add(“+this.textBox65.Text+”,this.textBox65.Text”);cmdDataBase.Parameters.Add(“+this.textBox66.Text+”,this.textBox66.Text);cmdDataBase.ExecuteNonQuery();}
using(MySqlConnection conn = new MySqlConnection(constring))
using(MySqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "update database.check set namethestore = @namethestore, checkername= @checkername where namethestore = @namethestore";
cmd.Parameters.AddWithValue(@namethestore, this.textBox66.Text);
cmd.Parameters.AddWithValue(@checkername, this.textBox65.Text);
conn.Open()
if(cmd.ExecuteNonQuery() > 0)
MessageBox.Show("saved");
}