好的,我是新手。我有两个ArrayList,我想将数据从arralylist插入到表中。一个arraylist用于插入表参数,另一arraylist用于插入表的值。
我尝试搜索是否有动态的插入方式,但是找不到。
ArrayList<String> list= new ArrayList<>();
ArrayList<String> values= new ArrayList<>();
list.add("userid");
list.add("name");
list.add("email");
values.add(userID);
values.add(name);
values.add(email);
String sql = "insert into users (" + list + ") values( " + values + ")";
stmt.executeUpdate(sql);
我想将数据插入表中。但是像userid这样的参数应位于''(引号)中,名称应位于”(引号)中。但它们不会自动转换。还有其他方法可以完成相同的任务吗? 有什么方法可以从JSON获取数据并在本地插入表中?
答案 0 :(得分:2)
您应该不不要将类似的值连接到SQL字符串中。请改用PreparedStatement
:
String sql = "insert into users (userid, name, email) values (?,?,?)";
PreparedStatement pstmt = connection.prepareStatement(sql);
插入多行的首选方法是使用批处理
for (int i=0; i < values.size(); i++) {
pstmt.setString(i+1, values.get(i);
}
pstmt.executeUpdate();
以列名形式传递列名userid
的值似乎是错误的。通常这些存储为整数。
答案 1 :(得分:1)
您可以使用String.join
方法来组成查询:
String sql = "insert into users (" + String.join(", ", list) + ") values( '" + String.join("', '", values) + "')";
但是这种由原始String
组成的手工sql很危险,并且很容易受到注入攻击。我建议使用其他解决方案,例如orm。