在您发表评论之前请注意我知道我的代码很容易受到SQL注入攻击,请忽略任何有关它易受攻击的评论
我已经在网站上查了解答案,但似乎没有一个适合我的情况,很多都是PHP。
我正在尝试从Visual Studio 2012上的C#Forms Application更新MySQL数据库的信息,所以我允许用户输入数据,但我希望他们能够更新他们的数据。
我尝试了各种不同的方法,很多人给我错误,我觉得我对这种方法非常接近。
string Connection = "server = localhost; " + "database = root; " + "uid = root;" + "pwd = password;";
private void btnSubmit_Click(object sender, EventArgs e)
{
MySqlConnection Conn = new MySqlConnection(Connection);
try
{
Conn.Open();
string Query = "Update users (Calories) VALUES(@Calories) WHERE username = " + Form1.sName + "AND Day = " + Form1.iDay;
MySqlCommand cmd = new MySqlCommand(Query, Conn);
cmd.Parameters.AddWithValue("@Calories", txtCalories.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Data Saved");
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Conn.Close();
}
它告诉我语法错误。
我允许用户输入上一个表单的信息,点击“继续”后,它会将数据传递给下一个表单,即此表单。
我希望他们能够使用他们在这个数据上输入的信息来更新他们在数据库中的数据但仅限于最近一天,这就是为什么我已经包含了day变量。
答案 0 :(得分:1)
错误的查询结构,VALUES用于插入。你应该使用SET:
"Update users SET `Calories` = @Calories WHERE username = " + Form1.sName + "AND Day = " + Form1.iDay;
答案 1 :(得分:1)
UPDATE语法错误。并且您缺少字符串值周围的单引号。假设用户名和日期都是数据库中的字符串。
string Query = "Update users SET Calories = @Calories WHERE username = '" + Form1.sName + "' AND Day = '" + Form1.iDay + "'";