将记录插入到同一MySQL Schema的不同表中

时间:2015-08-03 13:28:29

标签: java mysql sql

所以我可以成功地将信息插入一个名为" 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例外。

任何帮助都会很棒!

3 个答案:

答案 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