84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
认证0级讲师
JDBC本身支持批量更新,具体API如下:
addBatch(String sql):Statement类的方法, 可以将多条sql语句添加Statement对象的SQL语句列表中addBatch():PreparedStatement类的方法,可以将多条预编译的sql语句添加到PreparedStatement对象的SQL语句列表中 executeBatch():把Statement对象或PreparedStatement对象语句列表中的所有SQL语句发送给数据库进行处理 clearBatch():清空当前SQL语句列表
使用批量更新API,我将你的代码调整如下:(注:如果SQL列表包含过多的待处理SQL语句, 可能会产生OutOfMemory错误。所以需要及时处理SQL语句列表。)
public class AddBatchSql { public void add(String fid,String title,String content){ Connection connection = null; Statement stmt = null; String sql1 = null; String sql2 = null; try{ connection = ConnectionUtils.getConnection(); stmt = connection.createStatement(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateValue = simpleDateFormat.format(new Date()); sql1 = "insert into news_base(fid,title,date,author) values("+fid+",'"+title+"','"+dateValue+"','Admin')"; sql2 = "insert into news_content (cid,content) values("+fid+",'"+content+"')"; List<String> sqlList = new ArrayList<String>(); sqlList.add(sql1); sqlList.add(sql2); for (int i = 0; i < sqlList.size(); i++) { String sql = sqlList.get(i); stmt.addBatch(sql); if (i==500) { stmt.executeBatch();//为避免出现OutOfMemory错误,及时处理 stmt.clearBatch();//清空列表 } } //最后一次列表不足500条,处理 stmt.executeBatch(); }catch(Exception e){ e.printStackTrace(); }finally{ if(stmt != null){ try{ stmt.close(); }catch(Exception e){ e.printStackTrace(); } } } } }
多条相关联的记录用这种方法肯定是要一行一行写的,你可以自己封装一下,看起来应该好不了多少,还是用的orm框架吧,可读性好些。
可以用addBatch()批量处理语句
框架的好处就体现出来了,会帮你做重复的操作
JDBC本身支持批量更新,具体API如下:
使用批量更新API,我将你的代码调整如下:(注:如果SQL列表包含过多的待处理SQL语句, 可能会产生OutOfMemory错误。所以需要及时处理SQL语句列表。)
多条相关联的记录用这种方法肯定是要一行一行写的,你可以自己封装一下,看起来应该好不了多少,还是用的orm框架吧,可读性好些。
可以用addBatch()批量处理语句
框架的好处就体现出来了,会帮你做重复的操作