因此,我可以使用以下代码成功地将信息插入一个名为“部件”的表中:
String sql1 = "INSERT INTO parts(PART1, PART2, PART3, PART4, PART5)" + "VALUES(?,?,?,?,?)";
PreparedStatement prepareStatement = conn.prepareStatement(sql1);
prepareStatement.setString(1,strarr.StringArray[0][0]);
prepareStatement.setString(2,strarr.StringArray[0][1]);
prepareStatement.setString(3,strarr.StringArray[0][2]);
prepareStatement.setString(4,strarr.StringArray[0][3]);
prepareStatement.setString(5,strarr.StringArray[0][4]);
prepareStatement.execute();但是,当我尝试将一些数据插入到一个不同的表中时,这个表名为subsubparts,其模式与它抛出错误的原因完全相同:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:语法出错;请检查与MySQL服务器版本相对应的手册,以获得接近'2.1、2.2、2.3、2.4、2.5‘值的正确语法(“疾病的$$$Epidemiology\r\n文献海洋”,位于第1行)。
这是在执行preparedStatement的行上。
下面是第二种失败的代码(如果这有帮助的话):
String sql2 = "INSERT INTO subsubparts(2.1, 2.2, 2.3, 2.4, 2.5)" + "VALUES(?,?,?,?,?)";
PreparedStatement preparedStatement0 = conn.prepareStatement(sql2);
preparedStatement0.setString(1, strarr.StringArray[2][0]);
preparedStatement0.setString(2, strarr.StringArray[2][1]);
preparedStatement0.setString(3, strarr.StringArray[2][2]);
preparedStatement0.setString(4, strarr.StringArray[2][3]);
preparedStatement0.setString(5, strarr.StringArray[2][4]);
preparedStatement0.execute();更令人困惑的是,在导入com.mysql.jdbc时,if抛出了一个import java.sql.SQLException异常。
任何帮助都是很好的!
发布于 2015-08-03 13:33:49
第二个查询看上去不对:
INSERT INTO subsubparts(2.1, 2.2, 2.3, 2.4, 2.5) VALUES(?,?,?,?,?)应改为:
INSERT
INTO subsubparts(FieldName1,FieldName2, FieldName3, FieldName4, FieldName5)
VALUES(?,?,?,?,?)如果2.1是列的名称,则必须引用该名称,例如"2.1“
发布于 2015-08-03 13:40:30
如果您的列名是类似于2.1的数字,那么用如下所示的引号来包装它:
String sql2 = "INSERT INTO subsubparts(`2.1`, `2.2`, `2.3`, `2.4`, `2.5`)"
+ "VALUES(?,?,?,?,?)";发布于 2015-08-03 13:40:58
我所看到的两个查询之间的主要区别是查询两个在列名中有句点。MySQL不会承认这是-是的。相反,您需要引用每个后排的列名:
(`2.1`, `2.2`, `2.3`, `2.4`, `2.5`)也可以使用双引号.有关更多细节,请参见关于标识符的MySQL文档。
https://stackoverflow.com/questions/31788637
复制相似问题