2016-04-29 3 views
-1

HashMapをAccessデータベースに挿入しようとしていますが、エラーが発生し続けます。 は、ここに私のコードです:HashMapをJavaのデータベースに挿入する方法

for (Entry<String, String> entry : mapImpedanceAll.entrySet()) { 
          prep1 = entry.getKey().replaceAll("\\s", "_"); 
          prep1=prep1.replace(":",""); 
           prep1=prep1.replace("<","LessThan"); 
           prep1=prep1.replaceAll("\\." ,""); 
           prep1=prep1.replaceAll("\\(s\\)" ,""); 
           prep1=prep1.replaceAll(",$" ,""); 
           prep1=prep1.replaceAll("%" ,""); 
           prep1=prep1.replace("-" ,"_"); 
           prep1=prep1.replace("_" ,""); 
           if(dbColNames.contains(prep1)){ 

            try { 
             Statement qu = null; 
             qu =conn.createStatement(); 
             String stg = "INSERT INTO Impedance2 "+prep1+" VALUES('"+entry.getValue()+"')"; 
              qu.execute(stg); 
            } catch (Exception e) { 
             e.printStackTrace(); 
            } 
           } 
         } 

、ここでエラーです:私はその何かが声明String stg = "INSERT INTO Impedance2 "+prep1+" VALUES('"+entry.getValue()+"')";で行うことが確信している

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.4 row column count mismatch 

が、私はそれを周りにプレイしたのだが、それでもトリップアップ。私はあなたのサンプルコードは、次の操作を実行しようとしたHashMap

答えて

1

を追加する前に、それらに対してチェックできるように

dbColNamesは、既存のデータベースのカラム名の配列です:ハッシュマップ内の各エントリに対して 、あり場合キー名に等しい名前のテーブル列を使用すると、この値をデータベースに挿入しようとします。

ただし、生成されたINSERT文では、テーブル内の他の列は考慮されません。あなたは声明の中で適切なインデックスでハッシュマップの値を配置し、埋める場所、(あなたが列に対して定義された適切なデフォルト値を持っていない限り)すべてでこの作業を取得するために

INSERT INTO table (col1, col2, col3, col4) VALUES (NULL, value, NULL, NULL) 

:あなたは、次のようなものが必要でしょうNULLを持つ他のすべての列(または適切なデフォルト値; NULL値は許可されない場合もあります)。私が使用して、さらに、値がすべてで利用可能な場合のためにチェックアウト左

string sql = "INSERT INTO table (col1, col2, col3, col4) VALUES (" 
      + hashmap.get("col1") + ", " + hashmap.get("col2") + ", " 
      + hashmap.get("col3") + ", " + hashmap.get("col4") + ");"; 

:あなたのハッシュマップは、1つのデータセットを表現しなければならない場合

は、あなたが1つのINSERT文にすべての日付を結合する必要がありますStringBufferがより効率的になります。これを複数回実行する場合は、準備されたステートメントを代わりに使用することを検討してください。

関連する問題