将数据从数组列表插入到表中



好吧,我是新手。我有两个 ArrayList,我想将数据从 arralylist 插入到表中。一个数组列表用于插入表参数,另一个数组列表用于插入表的值。

我尝试搜索是否有动态插入方式,但找不到任何方式。

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 这样的参数应该在 ''(引号( 中,name 应该在 ''(引号(中。 但它们不会自动转换。 还有其他方法可以完成相同的任务吗?有没有办法从 JSON 获取数据并在本地插入到表中?

不应该将这样的值连接到 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作为字符串传递似乎是错误的。通常这些存储为整数。

您可以使用String.join方法来编写查询:

String sql = "insert into users (" + String.join(", ", list) + ") values( '" + String.join("', '", values) + "')";

但是这种从原始String编写的手工 sql 是危险的,并且容易受到注入攻击。我建议使用其他解决方案,例如orm。

最新更新