sql更新语法

时间:2011-03-26 02:06:00

标签: c# asp.net mysql sql mysql-error-1064

您如何进行更新声明?

我想用此字符串更新UserID theUserid,我想在同一个表中更新带有fileuploadpaths(string)的picturepath(图片)

OdbcCommand cmd = new OdbcCommand("UPDATE Pictures 
                                      SET ('" + theUserId + "','" + fileuploadpaths + "')                                  
                                    WHERE (UserID, picturepath)", cn);

不确定是否

UPDATE Pictures 
   SET UserID = "+ theUserid +" 
       picturepath="+ fileuploadpaths +" 
 Where UserID = theUserid 
       picturepath = something already in my db?

修改

我试过这个:

OdbcCommand cmd = new OdbcCommand("UPDATE Pictures SET picturepath ='" + fileuploadpaths + "' WHERE UserId = '" + theUserId + "')", cn);

但是我收到了错误:

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的')'附近使用正确的语法

3 个答案:

答案 0 :(得分:3)

使用:

OdbcCommand cmd = new OdbcCommand("UPDATE PICTURES
                                      SET userid = ?,
                                          picturepath = ?
                                    WHERE userid = ?");

cmd.Parameters.AddWithValue("@theuser", theUserid);
cmd.Parameters.AddWithValue("@picpath", fileuploadpaths);
cmd.Parameters.AddWithValue("@userid", userid);

try
{
  myConnection.executeNonQuery(cmd);
}
catch (Exception e)
{
  Console.Write("Update failed: "+e.Message);
}

虽然参数有名称,但它们是绑定变量。意味着指定的值必须是“?”的位置顺序占位符,从查询字符串的第一个字符开始(“更新...”)。

参考

答案 1 :(得分:1)

你可能想要这样的东西:

Update Pictures set picturepath = 'SomePath' where UserId = 'someUserId'

答案 2 :(得分:1)

您只是通过用户ID查询,对吗?在这种情况下,它不需要包含在您的UPDATE子句中,picturepath不需要包含在WHERE子句中。

UPDATE Pictures 
   SET picturepath = '/somewhere/picture.png'
 Where UserID = 12345

有关详情,请参阅MySQL UPDATE docs