java - 将 java 集合保存在数据库中

标签 java mysql collections

我创建了一个 java 集合(命名集合),但无法将其保存到数据库中。 我认为最简单的方法是通过发送如下查询在 Persons 表中一个一个地插入集合对象(使用 for each 循环):

for (Person p: collection){ statement.executeUpdate("INSERT INTO Persons (Name,Surname,ID,Phone) values (a.getName(),a.getSurname(),a.getID(),a.getPhone();"); }

但我在编译时收到此错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 '' 附近使用的正确语法

a.getName()、a.getSurname()、a.getID()、a.getPhone() 是 getter,有没有办法在 sql 查询中使用它们?

最佳答案

使用准备好的语句:

Connection conn = DriverManager.getConnection(url);
String insert = "INSERT INTO Persons (Name,Surname,ID,Phone) values (?,?,?,?);";
PreparedStatement pStmnt = conn.prepareStatement(insert);
pstmnt.setString(1,a.getName());
pstmnt.setString(2,a.getSurname());
pStmnt.setInt(3,a.getId());
pStmnt.setString(3,a.getPhone());

pStmnt.execteUpdate();

准备好的语句防止SQL Injection并且应该尽可能多地使用。

你可以毫无困难地将它包装在一个循环中——只要确保你的对象引用了正确的东西:

for(Person p : collection{
    pstmnt.setString(1,p.getName());
    pstmnt.setString(2,p.getSurname());
    pStmnt.setInt(3,p.getId());
    pStmnt.setString(3,p.getPhone());

    pStmnt.execteUpdate();
}

关于java - 将 java 集合保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20801706/

相关文章:

java - JSTL 访问 HashMap 中的整数/长键

java - 线程 "main"java.io.FileNotFoundException : (The system cannot find the file specified) 中的异常

java - 如何使用正则表达式从路径中获取最后两个目录?

PHP MySQL 检查ID是否存在

mysql - 从多个表的变量进行查询

performance - Scala Collection 排序、sortWith 和 sortBy 性能

java - 如何将 JPanel 从其他类包含到主类中

mysql - 在给定 ID 之前直接选择 N 项

java - Guava 缓存生成器 : imply additional conditions to entity removal

java - Java 中是否有不产生垃圾的 HashMap 实现?