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

Java 以下查询导致MySQLSyntaxErrorException-我的查询有什么问题?,java,mysql,sql,exception,Java,Mysql,Sql,Exception,当我执行以下查询时,会引发以下异常 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行使用接近“-name,cpy address,cpy contact”值('nauman','ahmad18',12')的正确语法 导致异常的查询 String query="insert into company(cpy-name, cpy-addre

当我执行以下查询时,会引发以下异常

原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行使用接近“-name,cpy address,cpy contact”值('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();

SQL查询中不能使用
-
。使用`反引号或反勾号字符对列名进行转义

insert into company(`cpy-name`, `cpy-address`, `cpy-contact`)VALUES(?,?,?)
另一方面,如果数据库在您的控件中,请更改为列名,以使用“u”而不是“-”。使用非法字符并引用它们不是一种好的做法。
希望这有帮助

在SQL查询中不能使用
-
。使用`反引号或反勾号字符对列名进行转义

insert into company(`cpy-name`, `cpy-address`, `cpy-contact`)VALUES(?,?,?)
另一方面,如果数据库在您的控件中,请更改为列名,以使用“u”而不是“-”。使用非法字符并引用它们不是一种好的做法。
希望这有帮助

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

“`”


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

“`”


对于列名,您不能在SQL查询中使用破折号
-
符号,以便重命名列名或在列名和表名的两侧使用Escape
`

对于列名,您不能在SQL查询中使用破折号
-
符号,以便重命名列名或在列名的两侧使用Escape
`
名称和表名。

不要在表/列标识符中使用“-”。这会让你发疯的。更糟糕的是,在特殊情况下可能会导致错误,而您对此一无所知。不要在表/列标识符中使用“-”。这会让你发疯的。更糟糕的是,在特殊情况下,可能会导致错误,而您对此一无所知。