我试图使用jdbc将骨架数据插入数据库。
到目前为止,我的代码是:
Statement st=con.createStatement();
String sql = "INSERT INTO student (studentid, titleid, forename, familyname, dateofbirth) "
+ "VALUES (1, 1, 'forename1', 'surname1', '1996-06-03');";
我需要为此创建100个条目,而且我不太清楚如何去做。 我想要的只是学生ID,titleid,forename和familyname增加1,直到它达到100个条目并填入这些行,出生日期不需要改变。我问的是如何为这个
做一个循环答案 0 :(得分:2)
一般答案 - 您应该使用PrepareStatement
代替Statement
并批量执行。
插入多个条目或执行
的常用方法String sql = "INSERT INTO student (studentid, titleid, forename, familyname, dateofbirth) "
+ "VALUES (?, ?, ?, ?, ?);";
ps = connection.prepareStatement(SQL_INSERT);
for (int i = 0; i < entities.size(); i++) {
ps.setString(1, entity.get...());
...
ps.addBatch();
}
ps.executeBatch();
重要提示:
答案 1 :(得分:0)
有两种方法可以做到这一点。您可以将插入查询放在循环中,也可以将循环放在插入查询中。我发现更好的方法取决于数据库引擎(但我从未使用过postresql)和你想要插入的记录数。您可能会遇到最大查询长度或参数数量等。
以下代码示例是ColdFusion,但它旨在显示在查询中包含循环的一般概念。你必须在java中编写等效的代码。
<cfquery>
insert into yourtable
(field1
, field2
, etc)
select null
, null
, null
from SomeSmalllTable
where 1 = 2
<cfloop>
union
select <cfqueryparam value="#ValueForField1#">
, <cfqueryparam value="#ValueForField#">
, etc
</cfloop>
</cfquery>