国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JDBC怎樣實(shí)現(xiàn)批處理?【案例演示】

這篇具有很好參考價(jià)值的文章主要介紹了JDBC怎樣實(shí)現(xiàn)批處理?【案例演示】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在實(shí)際開發(fā)中,經(jīng)常需要向數(shù)據(jù)庫發(fā)送多條SQL語句,這時(shí),如果逐條執(zhí)行這些SQL語句,效率會(huì)很低。為此,JDBC提供了批處理機(jī)制,即同時(shí)執(zhí)行多條SQL語句。Statement和PreparedStatement都實(shí)現(xiàn)了批處理,本節(jié)將針對(duì)它們的批處理方式進(jìn)行詳細(xì)的講解。

1.Statement批處理

當(dāng)向數(shù)據(jù)庫發(fā)送多條不同的SQL語句時(shí),可以使用Statement實(shí)現(xiàn)批處理。Statement通過addBatch()方法添加一條SQL語句,通過executeBatch()方法批量執(zhí)行SQL語句。為了幫助讀者更好地學(xué)習(xí)如何使用Statement實(shí)現(xiàn)批處理,下面通過一個(gè)案例來演示。

package cn.itcast.jdbc.example;
import java.sql.Connection;
import java.sgl.Statement;
import cn.itcast.jdbc.example.utils.JDBCUtils;
public class Example10 {
     public static void main (String[] args) {
     connection conn=null:
     statement stmt=null;
     try {
       //加載數(shù)據(jù)庫驅(qū)動(dòng)
       conn= JDBCUtils.getConnection():
       stmt*conn.createStatement();
       //SQL語句
     String sql1="DROP TABLE IF EXISTS school";
     String sq12="CREATE TABLE school (id int,name varchar(20))";
     String sql3="INSERT INTO school VALUES(2,'傳智播客')";
     String sql4="UPDATE school SET id=1";
       //Statement 批處理 SQL語句
       stmt.addBatch(aql1);
       stmt.addBatch (sql2):
       stmt.addBatch(sql3);
       stmt.addBatch (sq14);
       stmt.executeBatch();
    } catch (Exception e) {
       e.printStackTrace();
    } finally{                        //釋放資源
        JDBCUtils.release (null,stmt,conn);
    }
  }
}

程序運(yùn)行過程中,Statement會(huì)將4條SQL語句提交給數(shù)據(jù)庫一起執(zhí)行。為了驗(yàn)證例1-13中的SQL語句是否執(zhí)行成功,進(jìn)入MySQL,使用SELECT語句查看school表,JhmSQI嘉句的執(zhí)行結(jié)果如下所示。

mysql>select · from school;
+------+--------------+
|  id  |  name        |
+------+--------------+
|   1  |  傳智播客    |
+------+--------------+
1 row in set (0.00 sec)

從上述結(jié)果可以看出,school表存在,并且向表中添加了一條數(shù)據(jù),該數(shù)據(jù)的id被成功修改成了1。

2. PreparedStatement 批處理

當(dāng)向同一個(gè)數(shù)據(jù)表中批量更新數(shù)據(jù)時(shí),如果使用Sratement,需要書寫很多SQL語句,這時(shí),為了避免重復(fù)代碼的書寫,可以使用PreparedStatement 實(shí)現(xiàn)批處理。與Statement相比,PreparedStatement靈活許多,它既可以使用完整的SQL,也可以使用帶參數(shù)的不完整SQL。但是,對(duì)于不完整的SQL,其具體的內(nèi)容是采用“?”占位符形式出現(xiàn)的,設(shè)置時(shí)要按照“?”順序設(shè)置具體的內(nèi)容。

為了幫助讀者更好地學(xué)習(xí)如何使用PreparedStatement實(shí)現(xiàn)批處理,下面通過一個(gè)案例來演示。

package cn.itcast.jdbc.example;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement ;
import  cn.itcast.jdbc.example.utils.JDBCUtils;
public class Exanple11 {
    public static void main (String[] args) {
        Connection conn=null;
        PreparedStatement preStmt=null;
        try {
            //加載并注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)
             conn=JDBCUtils.getConnection():
            String sql="INSERT INTO users(name,password,email,birthday)"
                   +"VALUES(?,?,?,?)";
            preStmt=conn.prepareStatement(sq1);
            for (int i=0;i<5;i++)(
                preStmt.setString(1, "name"+i);
                preStmt.setString(2,"password"+i);
                preStmt.setString(3,"email"+i+"9itcast.cn");
                preStmt.setDate(4, Date.valueOf("1989-02-19"));
                preStmt.addBatch();
             }
             preStmt.executeBatch():
        } catch (Exception e) {
            e.printStackTrace();

        } finally{                //釋放資源
            JDBCUtils.release (null, preStmt, conn);
        }
    }
}

程序運(yùn)行后,users表中會(huì)同時(shí)添加5條數(shù)據(jù)。為了查看數(shù)據(jù)添加是否成功,進(jìn)入MySQL,使用SELECT語句查看 users表,結(jié)果如下所示。

mysql>select * from users;
+-----+-----------+------------+--------------------+--------------+
|id   |  name     |  password  |  email             |  birthday    |
+-----+-----------+------------+--------------------+--------------+
|  1  |  za       |  123456    | zs@sina.com        |  1980-12-04  |
|  2  |  lisi     |  123456    | lisi@sina.com      |  1981-12-04  |
|  3  |  wangwu   |  123456    | wangwu@sina.com    |  1979-12-04  |
|  5  |  hl       |  123       | hl@sina.com        |  2015-04-18  |
|  6  |  name0    |  password0 | email0@itcast.cn   |  1989-02-19  |
|  7  |  name1    |  password1 | email1@itcast.cn   |  1989-02-19  |
|  8  |  name2    |  password2 | email2@itcast.cn   |  1989-02-19  |
|  9  |  name3    |  password3 | email3@itcast.cn   |  1989-02-19  |
|  10 |  name4    |  password4 | email4@itcast.cn   |  1989-02-19  |
+-----+-----------+------------+--------------------+--------------+
9 rows in set (0.00 sec)

從上述結(jié)果可以看出,Examplel1批量添加了5條數(shù)據(jù)。由此可見,當(dāng)向同一個(gè)表中批量添加或者更新數(shù)據(jù)的時(shí)候,使用PreparedStatement比較方便。

注意:批處理執(zhí)行SELECT語句會(huì)報(bào)錯(cuò)。因?yàn)镾tatement和 PreparedStatement的executeBatch()方法的返回值都是int[]類型,所以,能夠進(jìn)行批處理的SQL語句必須是INSERT、UPDATE、DELETE等返回值為int類型的SQL語句。文章來源地址http://www.zghlxwxcb.cn/news/detail-458324.html

到了這里,關(guān)于JDBC怎樣實(shí)現(xiàn)批處理?【案例演示】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 批處理命令大全 | Windows批處理教程 - ChatGPT

    批處理以.bat或.cmd文件的形式存在,在Windows命令提示符下運(yùn)行,也可以通過雙擊批處理文件來運(yùn)行。批處理文件由一系列命令組成,可以按照順序執(zhí)行,也可以根據(jù)條件或循環(huán)控制選擇性地執(zhí)行。 在Windows上創(chuàng)建一個(gè)批處理文件非常簡單,在編輯器中輸入一系列命令并保存為

    2024年02月04日
    瀏覽(30)
  • Windows批處理

    @ echo off :關(guān)閉命令的回顯功能,這樣在執(zhí)行腳本時(shí)不會(huì)顯示每條命令的具體執(zhí)行過程。建議將此行放在批處理腳本的首行。 rem :用于添加注釋,后面可以跟上注釋內(nèi)容。注釋的作用是對(duì)腳本進(jìn)行說明或提醒,不會(huì)被執(zhí)行。 pause :暫停批處理的運(yùn)行,直到用戶按下任意鍵才

    2024年02月07日
    瀏覽(56)
  • redis批處理優(yōu)化

    redis批處理優(yōu)化

    一個(gè)命令在網(wǎng)絡(luò)傳輸?shù)臅r(shí)間往往是遠(yuǎn)大于在redis中執(zhí)行命令的時(shí)間的,如果每條命令都要逐條經(jīng)歷網(wǎng)絡(luò)傳輸,耗時(shí)將會(huì)大大增加,我們不妨將命令多量少次的傳輸給redis,這樣就大大減少了因?yàn)榫W(wǎng)絡(luò)傳輸時(shí)間,大大提高的效率 2.1.單機(jī)模式下的批處理 2.2.集群模式下的批處理 這

    2024年01月19日
    瀏覽(31)
  • 【bat】批處理腳本大全

    【bat】批處理腳本大全

    目錄 1.概述 2.變量 3.運(yùn)算符 3.2.重定向運(yùn)算符 3.3.多命名運(yùn)算符 3.4.管道運(yùn)算符 4.命令 4.1.基本命令 4.2.參數(shù)傳遞 4.3.查看腳本內(nèi)容 4.4.注釋 4.5.日期和時(shí)間 4.6.啟動(dòng)腳本 4.7.調(diào)用其他bat 4.8.任務(wù)管理 4.8.1.任務(wù)列表查看 4.8.2.任務(wù)終止 4.9.文件夾 4.10.關(guān)機(jī) 4.11.環(huán)境變量 4.12.目錄 4.12.1

    2024年02月04日
    瀏覽(21)
  • BAT 批處理腳本教程

    第一節(jié) 常用批處理內(nèi)部命令簡介 批處理定義:顧名思義,批處理文件是將一系列命令按一定的順序集合為一個(gè)可執(zhí)行的文本文件,其擴(kuò)展名為BAT或者CMD。這些命令統(tǒng)稱批處理命令。 小知識(shí):可以在鍵盤上按下Ctrl+C組合鍵來強(qiáng)行終止一個(gè)批處理的執(zhí)行過程。 了解了大概意思后

    2024年02月02日
    瀏覽(29)
  • 大數(shù)據(jù)處理平臺(tái)的架構(gòu)演進(jìn):從批處理到實(shí)時(shí)流處理

    大數(shù)據(jù)處理平臺(tái)的架構(gòu)演進(jìn):從批處理到實(shí)時(shí)流處理

    ??個(gè)人主頁:程序員 小侯 ??CSDN新晉作者 ??歡迎 ??點(diǎn)贊?評(píng)論?收藏 ?收錄專欄:大數(shù)據(jù)系列 ?文章內(nèi)容:大數(shù)據(jù)框架演進(jìn) ??希望作者的文章能對(duì)你有所幫助,有不足的地方請(qǐng)?jiān)谠u(píng)論區(qū)留言指正,大家一起學(xué)習(xí)交流!?? 大數(shù)據(jù)處理平臺(tái)的架構(gòu)演進(jìn)經(jīng)歷了從批處理到實(shí)

    2024年02月10日
    瀏覽(23)
  • MyBatis批處理,使用foreach

    測試代碼: 批量插入數(shù)據(jù)的局限性: 無法獲取插入數(shù)據(jù)的id 批量生成的SQL太長,可能會(huì)被服務(wù)器拒絕 測試代碼

    2024年02月07日
    瀏覽(18)
  • .bat批處理打開多個(gè)程序

    作為程序員每天開機(jī)都需要打開idea、數(shù)據(jù)庫、xshell等開發(fā)軟件,操作相對(duì)繁瑣,于是想起了批處理來幫忙一鍵啟動(dòng)。 在桌面新建一個(gè)txt文件,改后綴名為.bat,并加上下面的代碼。 代碼一(推薦) 代碼執(zhí)行流程 點(diǎn)擊bat文件后先執(zhí)行第一個(gè)語句進(jìn)入到相應(yīng)的目錄。 執(zhí)行第二個(gè)

    2024年02月11日
    瀏覽(21)
  • Spring Batch 批處理框架

    Spring Batch 批處理框架

    Spring Batch 是一個(gè)輕量級(jí)、全面的批處理框架,旨在支持開發(fā)對(duì)企業(yè)系統(tǒng)的日常操作至關(guān)重要的健壯的批處理應(yīng)用程序。Spring Batch 建立在人們期望的 Spring Framework 特性(生產(chǎn)力、基于 POJO 的開發(fā)方法和一般易用性)的基礎(chǔ)上,同時(shí)使開發(fā)人員可以在必要時(shí)輕松訪問和使用更高

    2024年02月12日
    瀏覽(23)
  • 批處理文件修改注冊(cè)表

    批處理文件修改注冊(cè)表

    首先建一個(gè)txt文件,然后把txt的后綴改為bat 下面示例改ie的起始頁 下圖是修改完后的內(nèi)容,其中Start Page是需要修改項(xiàng)的名字,REG_SZ是類型 命令說明

    2024年02月11日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包