mysql - MySqlCommand 上的查询语法错误

标签 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() 出现此错误:

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.

怎么了?

最佳答案

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

关于mysql - MySqlCommand 上的查询语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770272/

相关文章:

MySQL 错误 "' WITH' 在此位置对于需要 ALTER、ANALYZE 的服务器版本无效...”

Mysql 同表中的匹配和计数

mysql - 如何选择连接条件的特定值?

c# - 在 C# 中如何将 IP 地址字符串解析为 uint 值?

.net - 有没有办法/工具来显示系统中所有的内存映射文件?

mysql - 如何选择具有与给定值列表完全匹配的外键的主键?

php - 如何从 PHP 中存储在我的数据库中的文本中获取前 n 个单词?

php - 生成带有当年前缀的序列号 例如 : 2016-000001- PHP/MYSQL

sql - 表格数据的每月分割,日期存储为纪元时间

c# - 如果状态码不等于 200 OK,则使用 Polly 重试 api 请求