2016-03-26 9 views
1

jdbcドライバからこのエラーがあります。私はなぜ、thoを知らない。Java - 「フィールドリスト」の列が不明です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(); 
} 

「値」と「colsの」JTableのからのデータが含まれているのArrayListです。 colsは列の名前で、値はセルの値です。

SYSOUT用出力:

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

エラー:

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

値のために単一の反転したカンマを使用してください。ちなみに 'setString()'などのメソッドを使用して値を設定してください – silentprogrammer

+0

ありがとう、しかし、私はまだエラーがあります。 – david20002062

+0

クエリの出力とエラー – silentprogrammer

答えて

2

PreaparedStatementを使用することが意図された方法はありません。 PreparedStatementを使用する場合は、 "set"メソッドの1つを使用して値を指定できます。ここで

は一例です:

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(...)setDate(...)、など)に基づいて、適切な「セット」メソッドを使用する必要があります。あなたは詳細を見つけることができますhere

+0

ありがとう、非常にありがとうございます。それは今働く。 :) – david20002062

+0

@ david20002062私は幸運を助けることができてうれしいです。 – Titus

関連する問題