![](/img/trans.png)
[英]How to insert java HashMap keys and values as columns in database using mybatis
[英]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.