Java - “字段列表”中的未知列jdbc错误

时间:2016-03-26 18:04:34

标签: java mysql jdbc

我的jdbc驱动程序出现此错误。我不知道为什么,等等。

以下是相应的代码:

try {
    String colNames = " ";
    for (int i=0; i<cols.size(); i++) {
        if (i == cols.size()-1) {
            colNames += cols.get(i);
        } else if (i<cols.size()) {
            colNames += cols.get(i)+", ";
        }               
    }       
    String colValues = " ";
    for (int i=0; i<values.size(); i++) {
        if (i == values.size()-1) {
            colValues += values.get(i);
        } else if (i<values.size()) {
            colValues += values.get(i) + ", ";
        }       
    }
    System.out.println(
        "INSERT INTO `" + tableName + "` (" + colNames + ") VALUES (" + colValues + ") "
    );
    //System.out.println(kerdojel);

    PreparedStatement pst = connHandler.conn.prepareStatement
        ("INSERT INTO `" + tableName + "` (" + colNames + ") VALUES (" + colValues + ") ");
    pst.executeUpdate();
    pst.close();
}

“values”和“cols”是包含JTable数据的ArrayLists。 cols是列名,值是单元格值。

Sysout的输出:

INSERT INTO `TableOne` ( nev, kor, lakhely) VALUES ( asd, 1, asd) 

错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'asd' in 'field list'

2 个答案:

答案 0 :(得分:2)

这不是income.ttest的意图。使用PreaparedStatement时,可以使用“set”方法之一指定值。

以下是一个例子:

PreparedStatement

您应该根据列的数据类型(String colNames = " "; String colValues = " "; for (int i=0; i<cols.size(); i++) { if(i!=0){ colNames += ", "; colValues += ", "; } colNames += cols.get(i); colValues += "?"; } try (PreparedStatement pst = connHandler.conn.prepareStatement("INSERT INTO `" + tableName + "` (" + colNames + ") VALUES (" + colValues + ") ");){ for (int i = 0; i < values.size(); i++) { pst.setString(i+1,values.get(i)); } pst.executeUpdate(); } setInt(...)等)使用适当的“设置”方法。您可以找到更多详细信息here

答案 1 :(得分:0)

尝试使用这样的命令来检查存在的问题。

PREPARE mycmd FROM 'INSERT INTO TableOne(nev,kor) VALUES (?, ?)'