版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Java的多線程
目錄和要求
Java程序通過流控制來執(zhí)行程序流,程序中單個順序的流控制稱為線程,多線程則指的是在單個程序中可以同時運(yùn)行多個不同的線程,執(zhí)行不同的任務(wù)。多線程意味著一個程序的多行語句可以看上去幾乎在同一時間內(nèi)同時運(yùn)行。線程與進(jìn)程相似,是一段完成某個特定功能的代碼,是程序中單個順序的流控制;但與進(jìn)程不同的是,系統(tǒng)在產(chǎn)生一個線程,或者在各個線程之間切換時,負(fù)擔(dān)要比進(jìn)程小的多,正因如此,線程被稱為輕負(fù)荷進(jìn)程(light-weightprocess)。一個進(jìn)程中可以包含多個線程。
學(xué)時:1學(xué)時Java的多線程講義1多線程的概述
2多線程的實現(xiàn)方法與控制3多線程的互斥
4多線程的同步
5多線程的應(yīng)用
6總結(jié)多線程的概念
線程是程序中的一條執(zhí)行路徑。多線程是指程序中包含多條執(zhí)行路徑。在一個程序中可以同時運(yùn)行多個不同的線程來執(zhí)行不同的任務(wù),即允許單個程序創(chuàng)建多個并行執(zhí)行的線程來完成各自的任務(wù)。瀏覽器程序就是一個多線程的例子,在瀏覽器中可以在下載Java小程序或圖像的同時滾動頁面,在訪問新頁面時,播放動畫和聲音,打印文件等。Java對多線程的支持
Java語言里,線程表現(xiàn)為線程類。Thread線程類封裝了所有需要的線程操作控制。在線程對象里有很多方法來控制一個線程是否運(yùn)行,睡眠,掛起或停止。線程類是控制線程行為的唯一的手段。一旦一個Java程序啟動后,就已經(jīng)有一個線程在運(yùn)行。可通過調(diào)用Thread.currentThread方法來查看當(dāng)前運(yùn)行的是哪一個線程。多線程的概述下面是一些常用線程類的方法。(1)類方法currentThread():返回正在運(yùn)行的Thread對象。yield():停止運(yùn)行當(dāng)前線程,將CPU控制權(quán)主動移交到下一個可運(yùn)行線程。sleep(intn):讓當(dāng)前線程睡眠n毫秒,n毫秒后,線程可以再次運(yùn)行。(2)實例(對象)方法start():為本線程建立一個執(zhí)行環(huán)境,然后調(diào)用本線程的run()方法。run():在其中書寫運(yùn)行本線程的將要執(zhí)行的代碼,也是Runnable接口的唯一方法。當(dāng)一個線程初始化后,由start()方法來調(diào)用它,一旦run()方法返回,本線程也就終止了。
stop():讓某線程馬上終止,系統(tǒng)將刪除本線程的執(zhí)行環(huán)境。suspend():將線程掛起,暫停運(yùn)行,但系統(tǒng)不破壞線程的執(zhí)行環(huán)境,可以用resume()來恢復(fù)本線程的執(zhí)行。resume():恢復(fù)被掛起的線程進(jìn)入可運(yùn)行狀態(tài)。setPriority(intp):給線程設(shè)置優(yōu)先級1<=p<=10。getPriority():返回線程的優(yōu)先級。setName(Stringname):賦予線程一個名字name。getName():取得由setName()方法設(shè)置的線程名字的字符串。wait(longtimeout):停止當(dāng)前線程,直到另外的線程對這個對象使用notify()或notifyAll()方法。notify()或notifyAll():喚醒指定對象的一個或所有線程。線程的狀態(tài)和生命周期一個線程從創(chuàng)建、啟動到終止期間的任何時刻,總是處于下面五個狀態(tài)中的某個狀態(tài)。1.創(chuàng)建狀態(tài)
用new運(yùn)算符創(chuàng)建一個Thread類或子類的實例對象時,形成的新線程就進(jìn)入創(chuàng)建狀態(tài),但此時還未對這個線程分配任何資源,沒有真正執(zhí)行它。2.可運(yùn)行狀態(tài)在創(chuàng)建線程后,若要執(zhí)行它,系統(tǒng)要對這個線程進(jìn)行登記,并為它分配系統(tǒng)資源,這些工作由start()啟動方法來完成。線程啟動后,將進(jìn)入線程隊列排隊等待CPU時間片,成為可運(yùn)行狀態(tài)(或稱為就緒狀態(tài))。此時線程已經(jīng)具備了運(yùn)行的條件,一旦它獲得CPU等資源時,就可以脫離開創(chuàng)建它的主線程而獨(dú)立運(yùn)行。3.運(yùn)行狀態(tài)當(dāng)可運(yùn)行狀態(tài)的線程被調(diào)度并獲得CPU等資源時,便進(jìn)入運(yùn)行狀態(tài)。4.阻塞狀態(tài)由于人為或系統(tǒng)的原因,線程必須停止運(yùn)行,以后還可以恢復(fù)運(yùn)行的狀態(tài)稱為阻塞狀態(tài)。發(fā)生以下幾種情況之一后,線程進(jìn)入阻塞狀態(tài)。(1)調(diào)用了該線程的sleep()休眠方法。(2)該線程正在等待I/O操作完成。(3)調(diào)用了wait()等待方法。(4)調(diào)用了suspend()掛起方法。5.終止?fàn)顟B(tài)運(yùn)行run()方法完成后或調(diào)用stop()或destroy()方法就進(jìn)入線程的終止態(tài)(或稱為死亡狀態(tài))。處于這種狀態(tài)的線程不具有繼續(xù)運(yùn)行的能力。線程的調(diào)度和優(yōu)先級處于可運(yùn)行狀態(tài)的線程進(jìn)入線程隊列排隊等待CPU等資源時,同一時刻在隊列中的線程可能有多個,它們完成各自任務(wù)的輕重緩急程度是不同的。為了體現(xiàn)上述差別,多線程系統(tǒng)會給每個線程自動分配一個線程的優(yōu)先級。任務(wù)較重要或緊急的線程,分配較高的優(yōu)先級,在可運(yùn)行態(tài)的線程隊列中就往前排;否則,就分配較低的優(yōu)先級。優(yōu)先級低的線程只能等到優(yōu)先級高的線程執(zhí)行完后才被執(zhí)行。對于優(yōu)先級相同的線程,則遵循隊列的“先進(jìn)先出”原則,即先到的線程先獲得系統(tǒng)資源來運(yùn)行。在Java語言中,對一個新建的線程,系統(tǒng)會分配一個缺省的線程優(yōu)先級:繼承創(chuàng)建這個線程的主線程的優(yōu)先級(一般為普通優(yōu)先級)。Thread類也提供了方法setPriority()來修改線程的優(yōu)先級。該方法的參數(shù)一般可用Thread類的優(yōu)先級靜態(tài)常量:
PRIORITY.NORM_PRIORITY普通優(yōu)先級(5)
PRIORITY.MIN_PRIORITY最低優(yōu)先級(1)
PRIORITY.MAX_PRIORITY最高優(yōu)先級(10)當(dāng)一個在可運(yùn)行狀態(tài)隊列中排隊的線程被分配到CPU等資源而進(jìn)入運(yùn)行狀態(tài)后,這個線程就稱為是被“調(diào)度”或被線程調(diào)度管理器選中了。線程調(diào)度管理器負(fù)責(zé)管理線程排隊和CPU等資源在線程間的分配。多線程的實現(xiàn)方法與控制可以通過繼承Thread類或?qū)崿F(xiàn)Runnable接口這兩種途徑來構(gòu)造自己的run()方法。
多線程的實現(xiàn)方法1.繼承Thread類可通過繼承Thread類并重寫其中的run()方法來定義線程體以實現(xiàn)線程的具體行為,然后創(chuàng)建該子類的對象以創(chuàng)建線程。在繼承Thread類的子類ThreadSubclassName中重寫run()方法來定義線程體的一般格式為:
publicclassThreadSubclassNameextendsThread{publicThreadSubclassName(){.....//編寫子類的構(gòu)造方法,可缺省
}
publicvoidrun(){.....//編寫自己的線程代碼
}}用定義的線程子類ThreadSubclassName創(chuàng)建線程對象的一般格式為:
ThreadSubclassName
ThreadObject=newThreadSubclassName();然后,就可啟動該線程對象表示的線程:
ThreadObject.start();//啟動線程2.實現(xiàn)Runnable接口編寫多線程程序的另一種的方法是實現(xiàn)Runnable接口。在一個類中實現(xiàn)Runnable接口(以后稱實現(xiàn)Runnable接口的類為Runnable類),并在該類中定義run()方法,然后用帶有Runnable參數(shù)的Thread類構(gòu)造方法創(chuàng)建線程。創(chuàng)建線程對象可用下面的兩個步驟來完成:(1)生成Runnable類ClassName的對象
ClassName
RunnableObject=newClassName();(2)用帶有Runnable參數(shù)的Thread類構(gòu)造方法創(chuàng)建線程對象。新創(chuàng)建的線程的指針將指向Runnable類的實例。用該Runnable類的實例為線程提供run()方法---線程體。
ThreadThreadObject=newThread(RunnableObject);然后,就可啟動線程對象ThreadObject表示的線程:ThreadObject.start();在Thread類中帶有Runnable接口的構(gòu)造方法有:publicThread(Runnable
target);publicThread(Runnable
target,String
name);publicThread(String
name);publicThread(ThreadGroup
group,Runnable
target);publicThread(ThreadGroup
group,Runnable
target,
String
name);其中,參數(shù)Runnable
target表示該線程執(zhí)行時運(yùn)行target的run()方法,String
name以指定名字構(gòu)造線程,ThreadGroup
group表示創(chuàng)建線程組。線程的建立舉例publicclassMyThreadextendsThread{publicMyThread(Stringname){
super(name);}publicvoidrun(){
for(inti=0;i<3;i++){
System.out.println(getName()+"isrunning");try{
sleep((long)(Math.random()*1000));}catch(InterruptedExceptione){
System.out.println(e);}}
System.out.println(getName()+"hasstopped.");}publicstaticvoidmain(String[]args){
MyThreadt1=newMyThread("Thread1");
MyThreadt2=newMyThread("Thread2");t1.start();t2.start();}}importjavax.swing.*;publicclassMyThread1extendsJFrameimplementsRunnable{privateJTextArea
textArea=newJTextArea();publicMyThread1(){
setTitle("TestMultithread");
add(textArea);setSize(300,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidrun(){
for(inti=0;i<3;i++){
textArea.append(Thread.currentThread().getName()+"isrunning.\n");try{
Thread.sleep((long)Math.random()*1000);}catch(InterruptedExceptione){System.out.println(e);}}
textArea.append(Thread.currentThread().getName()+"hasstopped.\n");}publicstaticvoidmain(String[]args){MyThread1t=newMyThread1();Threadt1=newThread(t,"Thread1");Threadt2=newThread(t,"Thread2");t1.start();t2.start();}}線程的建立舉例多線程的控制1.操作線程如果創(chuàng)建線程正常,可在線程的run()方法里控制線程。一旦進(jìn)入run()方法,便可執(zhí)行里面的任何程序。run()好象main()一樣。一旦run()執(zhí)行完,這個線程也就結(jié)束了。若想推遲一個線程的執(zhí)行,應(yīng)使用sleep(delay)休眠方法,delay是休眠的時間(毫秒)。當(dāng)線程休眠時并不占用系統(tǒng)資源。其他線程可繼續(xù)工作。2.暫停一個線程經(jīng)常需要掛起一個線程而不指定多少時間。例如,若創(chuàng)建了一個含有動畫線程的小程序。也許讓用戶暫停動畫直到他們想恢復(fù)為止。若不想將動畫線程扔掉,但想讓它停止,象這種類似的線程可用suspend()方法來掛起。用suspend()方法掛起線程并不永久地停止線程,這可用resume()方法重新激活線程。3.停止一個線程線程的最后一個控制是停止方法stop()。用它可以停止線程的執(zhí)行。多線程的(同步)互斥程序中的多個線程一般是獨(dú)立運(yùn)行的,各個線程有自己的數(shù)據(jù)和方法。但有時需要在多個線程之間共享一些資源對象,這些資源對象的操作在某些時候必須要在線程間很好地協(xié)調(diào),以保證它們的正確使用。不考慮協(xié)調(diào)性,就可能產(chǎn)生錯誤。
在Java語言中,為保證線程對共享資源操作的完整性,用關(guān)鍵字synchronized為共享資源加鎖來解決這個問題。從而達(dá)到對共享數(shù)據(jù)的互斥訪問。如果一個線程獲得了鎖,所有其他希望獲得該鎖從而對共享數(shù)據(jù)進(jìn)行訪問的線程將被暫停,進(jìn)入等待狀態(tài),直到前一個線程完成了對共享數(shù)據(jù)的訪問,釋放了該鎖為止,通常稱這個鎖為互斥鎖。synchronized可修飾一個代碼塊或一個方法,使修飾對象在任一時刻只能有一個線程訪問。從而提供了程序的異步執(zhí)行功能。使用synchronized的形式為:
synchronized(this){......}//修飾一個代碼塊
synchronizedmethodName(parameters){//修飾一個方法
......}多線程的交互有時候,多個線程需要相互協(xié)作來共同完成一個任務(wù),這需要在多個線程之間存在著一種交互機(jī)制。實現(xiàn)交互需要在這些線程之間相互通訊。Java提供了方法wait()和notify()等來使線程之間相互交談。一個線程可以進(jìn)入某一個對象的synchronized方法進(jìn)入等待狀態(tài),直到其他線程顯式地將它喚醒。可以有多個線程進(jìn)入同一個方法并等待同一個喚醒消息。多線程的應(yīng)用【例】一個Java小程序。在屏幕上顯示時間,每隔一秒鐘刷新一次。為使小程序不影響其他程序的運(yùn)行,使用了多線程。importjava.awt.*;importjava.applet.*;importjava.util.Date;publicclassClockextendsAppletimplementsRunnable{ThreadclockThread;Fontfont;
publicvoidinit(){font=newFont("TimesRoman",Font.BOLD,64);}publicvoidstart(){if(clockThread==null){
clockThread=newThread(this,"Showtime");
clockThread.start();}}publicvoidrun(){while(clockThread!=null){repaint();try{clockThread.sleep(1000);}catch(InterruptedExceptione){}
}}publicvoidpaint(Graphicsg){Datenow=newDate();
g.setFont(font);
g.setColor(Color.red);
g.drawString(now.getHours()+":"+
now.getMinutes()+":"
+now.getSeconds(),5,50);}publicvoidstop(){
clockThread.stop();}}程序運(yùn)行結(jié)果如下圖所示。補(bǔ)充JDBC數(shù)據(jù)庫編程技術(shù)(1學(xué)時)知識點(diǎn):了解常見的關(guān)系型數(shù)據(jù)庫熟悉JDBC的工作原理,掌握J(rèn)DBC操作數(shù)據(jù)庫所用到的類的使用方法掌握J(rèn)DBC開發(fā)數(shù)據(jù)庫的工作步驟本節(jié)主要介紹以下5個部分的內(nèi)容:1.關(guān)系數(shù)據(jù)庫簡介2.JDBC基礎(chǔ)3.主要JDBC類4.JDBC編程工作步驟5.實例一、關(guān)系數(shù)據(jù)庫簡介
(1)關(guān)系數(shù)據(jù)庫的特點(diǎn)有哪些?
一個數(shù)據(jù)庫由一個或多個表組成,每個表由行,列組成,列代表字段(即屬性),行代表記錄,表中的記錄應(yīng)該是唯一的,主關(guān)鍵字唯一。(2)對關(guān)系數(shù)據(jù)庫的操作有哪些?
搜索(查找),連接操作 添加,更新,刪除記錄
(3)SQL語句(1)SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[ASalias1][,[table.]field2[ASalias2][,…]]}
FROMtableexpression[,…][INexternaldatabase]
[WHERE…]
(2)更新數(shù)據(jù)語法:
UPDATE表名
SET新值
WHERE條件
(3)DELETE子句的語法:
DELETE[表名.*]
FROM來源表
WHERE條件(4)INSERT子句的語法:
INSETRINTO目的表或查詢(字段1,字段2,…)
values(數(shù)值1,數(shù)值2,…)二ODBC概述30ODBC(OpenDatabaseConnectivity
)定義:
ODBC是一種用來在相關(guān)和不相關(guān)的DBMS中存取數(shù)據(jù)的標(biāo)準(zhǔn)應(yīng)用程序數(shù)據(jù)接口。ODBC組成:應(yīng)用程序接口為數(shù)據(jù)庫應(yīng)用程序開發(fā)者提供了統(tǒng)一的SQL編程接口數(shù)據(jù)庫驅(qū)動器實現(xiàn)ODBCAPI(ODBC)的函數(shù)調(diào)用,ODBCAPI是數(shù)據(jù)庫廠商為程序設(shè)計者提供的一組直接訪問數(shù)據(jù)庫的函數(shù)驅(qū)動程序管理器用于為應(yīng)用程序裝載數(shù)據(jù)庫驅(qū)動器,為應(yīng)用程序與數(shù)據(jù)庫之間的操作選擇相互匹配的ODBCAPI函數(shù)數(shù)據(jù)源數(shù)據(jù)源是數(shù)據(jù)庫位置、數(shù)據(jù)庫類型以及ODBC驅(qū)動程序等信息的集成三、JDBC基礎(chǔ)
JDBC是為Java提供的一個平臺無關(guān)的數(shù)據(jù)庫標(biāo)準(zhǔn)API,它提供了一個通用的SQL數(shù)據(jù)庫存取機(jī)制,該機(jī)制為多數(shù)關(guān)系型DBMS提供統(tǒng)一接口。
JDBC分為JDBCAPI與JDBC驅(qū)動程序。前者即一組JDBC類庫,使用這個類庫可以以一種標(biāo)準(zhǔn)的方法、方便地訪問數(shù)據(jù)庫資源(在java.sql類包中)。
JDBC為訪問不同的數(shù)據(jù)庫提供了一種統(tǒng)一的途徑,象ODBC一樣,JDBC對開發(fā)者屏蔽了一些細(xì)節(jié)問題。二、JDBC基礎(chǔ)
JDBC包含一系列豐富的類,在java.sql包中(JDK.1.1以上).JDBC提供了一種API實現(xiàn)對數(shù)據(jù)庫透明存取的方法,這種存取依據(jù)驅(qū)動程序來實現(xiàn),不同的數(shù)據(jù)庫制造尚提供它們不同的驅(qū)動程序.JDBC的目標(biāo)是使應(yīng)用程序開發(fā)人員使用JDBC可以連接任何提供了JDBC驅(qū)動程序的數(shù)據(jù)庫系統(tǒng),這樣就使得程序員無需對特定的數(shù)據(jù)庫系統(tǒng)的特點(diǎn)有過多的了解,從而大大簡化和加快了開發(fā)過程。與ODBC相類似,JDBC接口(API)也包括兩個層次:
面向應(yīng)用的API:JavaAPI,抽象接口,供應(yīng)用程序開發(fā)人員使用(連接數(shù)據(jù)庫,執(zhí)行SQL語句,獲得結(jié)果)。
面向數(shù)據(jù)庫的API:JavaDriverAPI,供開發(fā)商開發(fā)數(shù)據(jù)庫驅(qū)動程序用。JDBC直接在應(yīng)用程序中加載驅(qū)動程序并連接特定的數(shù)據(jù)庫。二、JDBC基礎(chǔ)三、主要JDBC類(1)Driver類:用來與數(shù)據(jù)庫通信的軟件.(2)DriverManager類:是JDBC基礎(chǔ),用來管理和卸載JDBC驅(qū)動程序.該類有一個getConnection()方法,用于驗證JDBC數(shù)據(jù)源,并返回Connection對象.(3)Connection類:該類的CreateStatement()方法連接JDBC數(shù)據(jù)源,返回Statement對象.(4)Statement類:將SQL行為封裝起來交給數(shù)據(jù)庫引擎,調(diào)用該類的execute(),executeQuery(),executeUpdate()等方法,執(zhí)行SQL語句,返回resultSet對象.(5)ResultSet類:封裝了一個由SQL查詢返回的結(jié)果.該類的getString(),getInt()等方法獲得一欄數(shù)據(jù)的存取,next()方法到下一行.四、JDBC編程工作步驟任何一個JDBC應(yīng)用程序,都需要以下四個步驟:加載JDBC驅(qū)動程序建立與數(shù)據(jù)庫的連接進(jìn)行數(shù)據(jù)庫操作數(shù)據(jù)集結(jié)果分析關(guān)閉相關(guān)連接1、加載JDBC驅(qū)動程序在應(yīng)用程序中,有三種方法可以加載驅(qū)動程序:利用System類的靜態(tài)方法setProperty()System.setProperty(“jdbc.drivers”,“sun.jdbc.odbc.JdbcOdbcDriver”);
利用Class類的靜態(tài)方法forName()Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Class.forName(“oracle.jdbc.driver.OracleDriver”);
直接創(chuàng)建一個驅(qū)動程序?qū)ο髇ew
sun.jdbc.odbc.JdbcOdbcDriver();2、通過JDBC訪問數(shù)據(jù)庫37JDBC驅(qū)動程序分類JDBC-ODBC和ODBCDriver相關(guān)數(shù)據(jù)庫提供的JDBC驅(qū)動程序2、通過JDBC訪問數(shù)據(jù)庫38通過JDBC-ODBC來連接數(shù)據(jù)庫設(shè)置ODBC數(shù)據(jù)源2、通過JDBC訪問數(shù)據(jù)庫39通過JDBC-ODBC來連接數(shù)據(jù)庫加載驅(qū)動JDBC-ODBC驅(qū)動器try{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}catch(ClassNotFoundExceptione){}
解釋:“sun.jdbc.odbc.JdbcOdbcDriver”是驅(qū)動器類的名字以完整的Java類名為參數(shù),裝載此類,并返回一個Class對象同時,自動創(chuàng)建一個驅(qū)動器類的實例并自動調(diào)用驅(qū)動器管理器DriverManager類中的RegisterDriver方法來注冊它2、通過JDBC訪問數(shù)據(jù)庫40通過JDBC-ODBC來連接數(shù)據(jù)庫建立與數(shù)據(jù)庫的連接Connectioncon=DriverManager.getConnection("jdbc:odbc:PIMS","test","1234");解釋:將返回與指定數(shù)據(jù)庫建立的連接該方法有三個字符串參數(shù)第一個是JDBCURL,格式為jdbc:子協(xié)議:子名稱jdbc表示協(xié)議,JDBCURL中的協(xié)議總是jdbc;子協(xié)議是驅(qū)動器名稱;子名稱是數(shù)據(jù)庫的名稱,如果是位于遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫,則還應(yīng)該包括網(wǎng)絡(luò)地址,//主機(jī)名:端口/數(shù)據(jù)庫名第二個是訪問數(shù)據(jù)庫所需的用戶名第三個是用戶密碼Connection是一個接口,表示與指定數(shù)據(jù)庫的連接通過JDBC訪問數(shù)據(jù)庫41通過JDBC-ODBC來連接數(shù)據(jù)庫對數(shù)據(jù)庫進(jìn)行操作使用Connection對象創(chuàng)建Statement對象使用Statement對象執(zhí)行SQL命令從上一步驟返回的ResultSet對象中提取執(zhí)行結(jié)果通過JDBC訪問數(shù)據(jù)庫42Connection接口有3個方法可用來創(chuàng)建向數(shù)據(jù)庫發(fā)送SQL語句的對象createStatement創(chuàng)建向數(shù)據(jù)庫發(fā)送SQL語句的Statement對象,用于簡單的SQL語句
Statementstmt=con.createStatement();prepareStatement創(chuàng)建向數(shù)據(jù)庫發(fā)送SQL語句的PreparedStatement對象,用于帶有一個或多個參數(shù)的SQL語句。在SQL語句執(zhí)行前,這些參數(shù)將被賦值prepareCall創(chuàng)建向數(shù)據(jù)庫發(fā)送SQL語句的CallableStatement對象,用于調(diào)用數(shù)據(jù)庫中的存儲過程通過JDBC訪問數(shù)據(jù)庫43Statement接口提供了三種執(zhí)行SQL語句的方法,使用哪一個方法由SQL語句所產(chǎn)生的內(nèi)容決定executeQuery用于產(chǎn)生單個結(jié)果集的語句,例如SELECT語句
ResultSet
rs=stmt.executeQuery("Select*FromPerson");executeUpdate用于執(zhí)行INSERT、UPDATE或DELETE語句,以及CREATETABLE
stmt.executeUpdate("DELETEFROMPersonWHEREName='李四'");返回值是一個整數(shù),表示受影響的行數(shù)(即更新計數(shù)Execute用于執(zhí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中秋晚會結(jié)束致辭范文(11篇)
- 云南省防汛抗旱減災(zāi)工作講話稿(7篇)
- 中學(xué)的軍訓(xùn)心得體會
- 買衣服課件教學(xué)課件
- 影像科圖像質(zhì)量評價
- 安全實踐課件教學(xué)課件
- 建筑和土木工程 詞匯 第3部分:可持續(xù)性術(shù)語 編制說明
- 愛立信系列基站設(shè)備知識培訓(xùn)
- 人像插畫課件教學(xué)課件
- 電力拖動課件教學(xué)課件
- 新教科版四上科學(xué)3.5《運(yùn)動與摩擦力》教案(新課標(biāo))
- 支教教師考核登記表
- 中國融通資源開發(fā)集團(tuán)有限公司社會招聘筆試
- 六年級語文上冊部編版第六單元教材分析及所有教案
- 2024年紀(jì)念會計法實施周年會計知識百題競賽
- 企業(yè)數(shù)字化轉(zhuǎn)型戰(zhàn)略協(xié)議
- 2024年山東春季高考考試標(biāo)準(zhǔn)33英語考試標(biāo)準(zhǔn)
- 家政服務(wù)合同終止協(xié)議
- DZ∕T 0295-2016 土地質(zhì)量生態(tài)地球化學(xué)評價規(guī)范(正式版)
- DZ∕T 0283-2015 地面沉降調(diào)查與監(jiān)測規(guī)范(正式版)
- 護(hù)士職業(yè)暴露原因分析與防護(hù)
評論
0/150
提交評論