所以我可以成功地将信息插入一个名为" parts"使用代码:
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:你有一个 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本,使用接近' 2.1,2.2,2.3的正确语法, 2.4,2.5)价值观(' $$$疾病流行病学\ 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
时抛出import java.sql.SQLException
例外。
任何帮助都会很棒!
答案 0 :(得分:0)
您的第二个查询看起来不对:
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"
答案 1 :(得分:0)
如果您的列名称是2.1
之类的数字,请用引号括起来,例如
String sql2 = "INSERT INTO subsubparts(`2.1`, `2.2`, `2.3`, `2.4`, `2.5`)"
+ "VALUES(?,?,?,?,?)";
答案 2 :(得分:0)
我在两个查询之间看到的主要区别是查询二在列名中有句点。 MySQL不会按原样识别它。相反,您需要使用反引号引用每个列名称:
(`2.1`, `2.2`, `2.3`, `2.4`, `2.5`)
也可以使用双引号。有关详细信息,请参阅MySQL documentation on identifiers。