簡體   English   中英

如何在java中將HashMap插入到數據庫中

[英]How to insert a HashMap into a database in java

我正在嘗試將我的 HashMap 插入到 Access 數據庫中,但我不斷收到錯誤消息。 這是我的代碼:

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();
        }
    }
}

這是錯誤:

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc::3.0.4 行列數不匹配

我確定這與String stg = "INSERT INTO Impedance2 "+prep1+" VALUES('"+entry.getValue()+"')"; 但我玩過它,它仍然絆倒。

dbColNames是現有數據庫列名的數組,因此我可以在添加 HashMap 之前檢查它們

您的示例代碼嘗試執行以下操作: 對於散列映射中的每個條目,如果存在名稱等於鍵名的可用表列,您嘗試將該值插入到數據庫中。

但是,您生成的 INSERT 語句不會考慮您表中的其他列。 您將需要類似以下內容:

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

讓它完全工作(除非你為你的列定義了適當的默認值),你將哈希圖值放在語句中的適當索引處,並用 NULL(或適當的默認值;NULL 值可能甚至不被允許)。

如果你的 hashmap 代表一個單一的數據集,你需要將所有數據組合成一個單一的 INSERT 語句:

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

我沒有檢查值是否可用,此外,使用 StringBuffer 會更有效。 如果您多次執行此操作,請考慮改用准備好的語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM