将数据从arraylist插入表

时间:2019-04-19 05:15:24

标签: java sql postgresql jdbc

好的,我是新手。我有两个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获取数据并在本地插入表中?

2 个答案:

答案 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。