【问题标题】:JAVA: You have an error in your SQL syntax; check the manual that corresponds? [closed]JAVA:您的 SQL 语法有错误;检查对应的手册? [关闭]
【发布时间】:2020-02-07 11:57:13
【问题描述】:

我正在将 Java + MySQL 用于我的游戏服务器项目。不过我遇到了问题-

MySQLSyntaxErrorException: 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 '(connection) (`uuid`, `name`, `join_date`, `group`) VALUES (5dcd14f9 at line 1

uuid 应该是 5dcd14f9-....-.....-... 点是应该存在的字符,而破折号只是破折号。 出于某种原因,我遇到了一个问题,它只获取 uuid 的第一部分。 我错过了什么,还是我的语法实际上有问题? 这是我的代码,基本上是错误:

PreparedStatement addPlayer = mySQL.getConnection().prepareStatement("INSERT INTO " + mySQL.getConnection() + " (uuid, name, join_date, group) VALUES (?,?,?,?)");

我当然将 uuid 转换为字符串并将其作为值添加到第一列。 我查看了其他解决方案并尝试了它们,但它们似乎不起作用。

【问题讨论】:

  • 没有看到代码,很难评论语法错误。
  • 似乎 mySQL.getConnection() 返回值“(连接)”。无论如何,您应该有一个表名...
  • mySQL.getConnection() 是错误的。它应该是 TABLE 名称。
  • @jarlh 和 CoCoNess ty。我什至没有意识到我放的是连接而不是表。

标签: java mysql sql syntax


【解决方案1】:

从您的错误中我可以看出,mySQL.getConnection().toString() 生成了"(connection)",这不是您要插入的表的名称的有效语法。

也许代替:

PreparedStatement addPlayer = mySQL.getConnection().prepareStatement("INSERT INTO " + mySQL.getConnection() + " (uuid, name, join_date, group) VALUES (?,?,?,?)");

你想写这样的东西:

PreparedStatement addPlayer = mySQL.getConnection().prepareStatement("INSERT INTO " + getTableName() + " (uuid, name, join_date, group) VALUES (?,?,?,?)");

【讨论】:

  • 不,我没有将 MySQL.getConnection() 转换为字符串,我只是将地址更改为 (connection) 以节省空间,我的错误可能应该提到它
  • mySQL.getTableName() 不需要参数,知道返回哪个表名吗?
  • @Coper 连接字符串时会自动发生
  • @jarlh 是的,我的意思是任何返回有效表名的方法,抱歉造成混淆。
  • 是的,你说得对,我没有意识到我写的是连接而不是表。
猜你喜欢
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多