认证0级讲师
JDBC本身支援批次更新,具體API如下:
addBatch(String sql):Statement類別的方法, 可以將多條sql語句加入Statement物件的SQL語句列表中addBatch():PreparedStatement類別的方法,可以將多條預編譯的sql新增到PreparedStatement物件的SQL語句清單中executeBatch():把Statement物件或PreparedStatement物件語句列表中的所有SQL語句傳送給資料庫處理clearBatch( 使用批次更新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(); } } } } }
addBatch(String sql):Statement類別的方法, 可以將多條sql語句加入Statement物件的SQL語句列表中addBatch():PreparedStatement類別的方法,可以將多條預編譯的sql新增到PreparedStatement物件的SQL語句清單中executeBatch():把Statement物件或PreparedStatement物件語句列表中的所有SQL語句傳送給資料庫處理clearBatch( 使用批次更新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如下:
多條相關聯的記錄用這種方法肯定是要一行一行寫的,你可以自己封裝一下,看起來應該好不了多少,還是用的orm框架吧,可讀性好些。
可以用addBatch()批次處理語句
框架的好處就體現出來了,會幫你做重複的操作