使用win表单更新mysql数据库,总是会出现奇怪的错误消息
本文关键字:消息 错误 更新 表单 win mysql 数据库 使用 | 更新日期: 2023-09-27 18:21:48
在我的winforms应用程序中,我想使用表单更新数据库值。我设法创建了除此之外的所有其他部分。当我试图更新数据库时,它给了我一些奇怪的sql错误。我不知道我的代码出了什么问题
它向我显示了类似的错误
您的sql语法中有一个错误,请检查与您的mysql服务器版本对应的手册
这是我用来更新数据库的代码。有人能帮我检查一下这个代码吗?
private void button1_Click(object sender, EventArgs e)
{
string constring = string.Format("datasource='{0}';username=***************;port=3306;password=**********;Connect Timeout=20000;Command Timeout=28800", serverip.Text);
string Query = "update wartif.userdata set (citrixpass= '" + this.citrix_pass_box.Text + " ', idmpass = '" + this.IDM_pass_box.Text + "' , mortracpass = '" + this.mortrac_pass_box.Text + "' , detpass = '" + this.DET_pass_box.Text + "' where username = '" + this.Pwloggeninaslable.Text + "' ;";
MySqlConnection conwaqDatabase = new MySqlConnection(constring);
MySqlCommand cmdwaqDatabase = new MySqlCommand(Query, conwaqDatabase);
MySqlDataReader myreader;
try
{
conwaqDatabase.Open();
myreader = cmdwaqDatabase.ExecuteReader();
while (myreader.Read()) { }
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
您在SET子句之前打开了一个括号(不需要),但忘记在末尾关闭它
但是,让我向您展示如何编写此代码以避免sql注入和解析问题
string constring = .....;
string Query = @"update wartif.userdata set citrixpass=@ctx, idmpass = @idm,
mortracpass = @mtc, detpass = @det where username = @usr;";
using(MySqlConnection conwaqDatabase = new MySqlConnection(constring))
using(MySqlCommand cmdwaqDatabase = new MySqlCommand(Query, conwaqDatabase))
{
try
{
conwaqDatabase.Open();
cmdwaqDatabase.Parameters.AddWithValue("@ctx", this.citrix_pass_box.Text);
cmdwaqDatabase.Parameters.AddWithValue("@idm", this.IDM_pass_box.Text);
cmdwaqDatabase.Parameters.AddWithValue("@mtc", this.mortrac_pass_box.Text);
cmdwaqDatabase.Parameters.AddWithValue("@det", this.DET_pass_box.Text);
cmdwaqDatabase.Parameters.AddWithValue("@usr", this.Pwloggeninaslable.Text);
int rowsUpdated = cmdwaqDatabase.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这样,您就不必担心恶意用户试图通过Sql注入攻击破坏您的代码,您的查询字符串更具可读性,也不必担心传递包含单引号或正确格式化日期和小数的字符串