国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

JDBC之批處理

2019-11-14 22:10:48
字體:
供稿:網(wǎng)友
JDBC之批處理JDBC之批處理

  現(xiàn)在有這么一個需求,要求把2000條記錄插入表中,如果使用java代碼來操作,我們可以使用Statement或者PReparedStatement來實現(xiàn),通過循環(huán)來把SQL語句一條又一條地發(fā)送給數(shù)據(jù)庫處理。我們知道,數(shù)據(jù)庫處理SQL速度是非常快的,如果傳輸速度慢,跟不上處理速度,那么數(shù)據(jù)庫就會出現(xiàn)等待現(xiàn)象。為了解決這個辦法,我們可以一次發(fā)送多個SQL語句給數(shù)據(jù)庫處理,這樣就能增加效率,這時候我們就要用到批處理技術(shù)。

  然而,批處理也可以通過Statement和Preparement來實現(xiàn),要用到的主要方法如下:

 Statement批處理操作:

    void addBatch(String sql)  --把SQL語句加到批處理緩沖區(qū)中

    int[] executeBatch()    --執(zhí)行SQL緩沖區(qū)中的所有語句

    void clearBatch()      --清空緩存區(qū)中的所有SQL語句

 PreparedStatement操作:

    void addBatch(String sql)  --把一組參數(shù)加到參數(shù)緩沖區(qū)中

    int[] executeBatch()    --執(zhí)行SQL緩沖區(qū)中的所有參數(shù)組

    void clearBatch()      --清空緩存區(qū)中的所有參數(shù)組

下面就演示一下這些方法的用法吧~

利用Statement
    @Test    public void batchTest() throws Exception{        //調(diào)用工具類獲取連接        connection = sqlUtil.getconnection();                //生成Statemnt對象        Statement statement = connection.createStatement();                //把若干條SQL語句放到緩沖區(qū)中        for(int i=1;i<=200;i++){            //準(zhǔn)備sql語句            String sql = "insert into worker(wid,wname) values("+i+",'張三"+i+"')";            //添加到緩沖區(qū)            statement.addBatch(sql);                        if(i%20==0){                System.out.println("共"+ i +"條語句插入了表中");                //緩存區(qū)有20條指令時執(zhí)行                statement.executeBatch();                //執(zhí)行完清空緩存區(qū)                statement.clearBatch();            }        }        //關(guān)閉連接        sqlUtil.close(statement, connection);    }

利用PreparedStatement
    public void batchTest2() throws Exception{        //調(diào)用工具類獲取連接        connection = sqlUtil.getconnection();                //生成Statemnt對象        PreparedStatement prepS = connection.prepareStatement("insert into worker(wid,wname) values(?,?)");                //把若干條SQL語句放到緩沖區(qū)中        for(int i=1;i<=200;i++){            //設(shè)置參數(shù)            prepS.setObject(1, i);            String wname = "李四"+i;            prepS.setObject(2, wname);                        //添加到緩沖區(qū)            prepS.addBatch();                        if(i%20==0){                System.out.println("共"+ i +"條語句插入了表中");                //緩存區(qū)有20條指令時執(zhí)行                prepS.executeBatch();                //執(zhí)行完清空緩存區(qū)                prepS.clearBatch();            }        }        //關(guān)閉連接        sqlUtil.close(prepS, connection);    }

以上就是利用JDBC實現(xiàn)批處理了~

如果想要執(zhí)行效率最快,我們應(yīng)該使用 prepareStatemnt + 批處理 這樣的方式來執(zhí)行多條SQL語句。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南华县| 龙海市| 西乌珠穆沁旗| 花莲县| 福安市| 伊宁县| 克东县| 保德县| 德庆县| 清徐县| 金门县| 南和县| 巢湖市| 岗巴县| 柘城县| 峨眉山市| 板桥市| 桦甸市| 渭源县| 海口市| 惠州市| 阿拉尔市| 九龙县| 康保县| 香港 | 潜山县| 竹山县| 健康| 钟山县| 彩票| 通辽市| 绍兴县| 德州市| 韶山市| 永仁县| 蕉岭县| 永安市| 诸暨市| 西峡县| 隆尧县| 新闻|