在MySqlCommand

时间:2016-01-13 15:15:47

标签: mysql sql .net vb.net syntax-error

我正在使用MySqlCommand在我的vb.net应用程序中执行查询插入,现在我有了这个查询:

UPDATE primo_appointments SET 
  book_datetime = @parameter1, 
  start_datetime = @parameter2, 
  end_datetime = @parameter3, 
  notes = @parameter4, 
  hash = @parameter5, 
  is_unavailable = @parameter6 
WHERE hash = xqA5jdsFBLPTrvy5kKHfgXBZdv9Hs2Ld 
  AND lastUpdated = 12-01-2016 15:53:47.3978486

当我这样做时:.ExecuteNonQuery()出现此错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第15行的“15:53:47.3978486”附近使用正确的语法。

有什么问题?

2 个答案:

答案 0 :(得分:1)

您的lastUpdatedhash未用单引号括起来,这是导致错误的原因。

对此的修复是而不是将其括在引号中,但要为这些值以及其他值使用参数:

UPDATE primo_appointments SET 
  book_datetime = @parameter1, 
  start_datetime = @parameter2, 
  end_datetime = @parameter3, 
  notes = @parameter4, 
  hash = @parameter5, 
  is_unavailable = @parameter6 
WHERE hash = @oldHashString
  AND lastUpdated = @lastUpdatedDate

当您使用参数化列表时,您不必记住字段是否需要用引号括起来 - 这是为您处理的。它还可以保护您免受SQL注入攻击。

答案 1 :(得分:0)

你的varchar应该在2 '之间,你的查询应该是:

UPDATE primo_appointments SET book_datetime = @parameter1, 
start_datetime = @parameter2, end_datetime = @parameter3, 
notes = @parameter4, hash = @parameter5, is_unavailable = @parameter6 
WHERE hash = 'xqA5jdsFBLPTrvy5kKHfgXBZdv9Hs2Ld' 
AND lastUpdated = '12-01-2016 15:53:47.3978486'