以下查询导致MySQLSyntaxErrorException - 我的查询有什么问题?

时间:2016-05-29 08:05:31

标签: java mysql sql exception

执行以下查询时抛出以下异常

  

引起:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,以便在第1行使用“-name,cpy-address,cpy-contact”VALUES('nauman','ahmad18',12)附近的正确语法

查询导致异常的内容

  String query="insert into company(cpy-name, cpy-address, cpy-contact)VALUES(?,?,?)";
   Connection con=DataAccessLayer.getConnection();

   PreparedStatement stat=con.prepareStatement(query);
   stat.setString(1, cname);
   stat.setString(2, caddress);
   stat.setInt(3,x );
   int rowsAffected = stat.executeUpdate();

3 个答案:

答案 0 :(得分:2)

您无法在SQL查询中使用-。使用`后引号或后面的刻度字符转义列名称。

insert into company(`cpy-name`, `cpy-address`, `cpy-contact`)VALUES(?,?,?)

另一方面,如果数据库在您的控制范围内,请更改为列名以使用' _'而不是' - '。拥有非法字符并引用它们不是一个好习惯。 希望这有帮助!

答案 1 :(得分:2)

正如@uday所说,您应该更改列名或使用

  

" `"

答案 2 :(得分:2)

如果是列名,则不能在SQL查询中使用短划线-符号,以便重命名列名或使用Escape `列名和表名的两侧。