执行以下查询时抛出以下异常
引起: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();
答案 0 :(得分:2)
您无法在SQL查询中使用-
。使用`
后引号或后面的刻度字符转义列名称。
insert into company(`cpy-name`, `cpy-address`, `cpy-contact`)VALUES(?,?,?)
另一方面,如果数据库在您的控制范围内,请更改为列名以使用' _'而不是' - '。拥有非法字符并引用它们不是一个好习惯。 希望这有帮助!
答案 1 :(得分:2)
正如@uday所说,您应该更改列名或使用
" `"
答案 2 :(得分:2)
如果是列名,则不能在SQL查询中使用短划线-
符号,以便重命名列名或使用Escape `
列名和表名的两侧。