MySqlCommand 上的查询语法错误

Query syntax error on MySqlCommand

我正在使用 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()出现这个错误:

you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '15:53:47.3978486' at line 1.

怎么了?

你的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'

您的 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 注入攻击。