我只想在我的sql数据库中对一个表进行简单的插入。尽管如此,我得到了这个错误,尽管我在几个方面尝试过它。我在我的数据库“test”中有一个名为“values”的表,其中包含id为“idValues”的简单列和一个名为“value”的int值列。我只想插入一个简单的记录,其中1表示ID,1表示值(1/1)。某些版本可能有问题吗?
package jdbcdemo;
import java.sql.*;
public class Driver {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?autoReconnect=true&useSSL=false", "root", "rmi1337");
Statement statement = myConn.createStatement();
String sql = "INSERT INTO values " + "(idValues, value)" + "VALUES (1, 1)";
statement.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
com.mysql.jdbc.exceptions.jdbc4.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 'values(idValues, value)VALUES (1, 1)' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)
at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1552)
at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2607)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1480)
at jdbcdemo.Driver.main(Driver.java:22)
答案 0 :(得分:4)
Values
和value
都是保留字,因此需要像
String sql = "INSERT INTO `values` " + "(idValues, `value`)" + " VALUES (1, 1)";
答案 1 :(得分:0)
它错过了一个空白区域。
'values(idValues, value)VALUES (1, 1)'
应该是:
'values(idValues, value) VALUES (1, 1)'
所以你应该写下来:
String sql = "INSERT INTO values " + "(idValues, value) " + " VALUES (1, 1)";
但无论如何,您不应该为元数据使用关键字或保留字
A"价值观"表格具有误导性,此外它可能根据所使用的DBMS以及所使用的操作系统而有效。
在此link介绍MySQL如何处理区分大小写,您可以阅读:
这意味着这些名称在Windows中不区分大小写,但都是大小写 在大多数Unix中都很敏感。
在这个other link中,您可以获得有关MySQL保留密钥的信息。