欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java程序連接數(shù)據(jù)庫的常用的類和接口介紹

 更新時間:2015年10月10日 17:00:28   投稿:goldensun  
這篇文章主要介紹了Java程序連接數(shù)據(jù)庫的常用的類和接口,包括Connection類和Statement類等,需要的朋友可以參考下

編寫訪問數(shù)據(jù)庫的Java程序還需要幾個重要的類和接口。
DriverManager類

DriverManager類處理驅(qū)動程序的加載和建立新數(shù)據(jù)庫連接。DriverManager是java.sql包中用于管理數(shù)據(jù)庫驅(qū)動程序的類。通常,應(yīng)用程序只使用類DriverManager的getConnection()靜態(tài)方法,用來建立與數(shù)據(jù)庫的連接,返回Connection對象:

  static Connection getConnection(String url,String username,String password)


指定數(shù)據(jù)的URL用戶名和密碼創(chuàng)建數(shù)據(jù)庫連接對象。url的語法格式是:
    jdbc:<數(shù)據(jù)庫的連接機制>:<ODBC數(shù)據(jù)庫名>。
Connection類

Connection類是java.sql包中用于處理與特定數(shù)據(jù)庫連接的類。Connection對象是用來表示數(shù)據(jù)庫連接的對象,Java程序?qū)?shù)據(jù)庫的操作都在這種對象上進行。Connection類的主要方法有:

  • Statement createStatement():創(chuàng)建一個Statement對象。
  • Statement createStatement(int resultSetType,int resultSetConcurrency):創(chuàng)建一個Statement對象,生成具有特定類型的結(jié)果集。
  • void commit():提交對數(shù)據(jù)庫的改動并釋放當(dāng)前持有的數(shù)據(jù)庫的鎖。
  • void rollback():回滾當(dāng)前事務(wù)中的所有改動并釋放當(dāng)前連接持有的數(shù)據(jù)庫的鎖。
  • String getCatalog():獲得連接對象的當(dāng)前目錄。
  • boolean isClose():判斷連接是否已關(guān)閉。
  • boolean isReadOnly():判斷連接是否為只讀模式。
  • void setReadOnly():設(shè)置連接為只讀模式。
  • void close():釋放連接對象的數(shù)據(jù)庫和JDBC資源。

Statement類

Statement類是java.sql包中用于在指定的連接中處理SQL語句的類。數(shù)據(jù)庫編程的要點是在程序中嵌入SQL命令。程序需要聲明和創(chuàng)建連接數(shù)據(jù)庫的Connection對象,并讓該對象連接數(shù)據(jù)庫。調(diào)用類DriverManager的靜態(tài)方法getConnection()獲得Connection對象,實現(xiàn)程序與數(shù)據(jù)庫的連。然后,用Statement類聲明SQL語句對象,并調(diào)用Connection對象的createStatement()方法,創(chuàng)建SQL語句對象。例如,以下代碼創(chuàng)建語句對象sql:

  Statement sql = null;
  try{
    sql = con.createStatement();
  }catch(SQLException e){}


ResultSet類

有了SQL語句對象后,調(diào)用語句對象的方法executeQuery()執(zhí)行SQL查詢,并將查詢結(jié)果存放在一個用ResultSet類聲明的對象中,例如,以下代碼讀取學(xué)生成績表存于rs 對象中:

  ResultSet rs = sql.executeQuery(“SELECT * FROM ksInfo”);


ResultSet對象實際上是一個由查詢結(jié)果數(shù)據(jù)的表,是一個管式數(shù)據(jù)集,由統(tǒng)一形式的數(shù)據(jù)行組成,一行對應(yīng)一條查詢記錄。在ResultSet對象中隱含著一個游標(biāo),一次只能獲得游標(biāo)當(dāng)前所指的數(shù)據(jù)行,用next方法可取下一個數(shù)據(jù)行。用數(shù)據(jù)行的字段(列)名稱或位置索引(自1開始)調(diào)用形如getXXX()方法獲得記錄的字段植 。以下是ResultSet對象的部分方法:

  • byte getByte(int columnIndex):返回指定字段的字節(jié)值。
  • Date getDate(int columnIndex):返回指定字段的日期值。
  • float getFloat(int columnIndex):返回指定字段的浮點值。
  • int getInt(int columnIndex):返回指定字段的整數(shù)值。
  • String getString(int columnIndex):返回指定字段的字符串值。
  • double getDouble(String columnName):返回指定字段的雙精度值。
  • long getLong(String columnName):返回指定字段的long型整值。
  • boolean next():返回是否還有下一字段。

以上方法中的columnIndex是位置索引,用于指定字段,columnName是字段名。

用戶需要在查詢結(jié)果集上瀏覽,或前后移動、或顯示結(jié)果集的指定記錄,這稱為可滾動結(jié)果集。程序要獲得一個可滾動結(jié)果集,只要在獲得SQL的語句對象時,增加指定結(jié)果集的兩個參數(shù)即可。例如,以下代碼:

  Statement stmt = con.createStatement(type,concurrency);
  ResultSet rs = stmt.executeQuery(SQL語句)


語句對象stmt的SQL查詢就能得到相應(yīng)類型的結(jié)果集。
int 型參數(shù)type決定可滾動集的滾動方式:

  • ResultSet.TYPE_FORWORD_ONLY,結(jié)果集的游標(biāo)只能向下滾動。
  • ResultSet.TYPE_SCROLL_INSENSITIVE,游標(biāo)可上下移動,當(dāng)數(shù)據(jù)庫變化時,當(dāng)前結(jié)果集不變。
  • ResultSet. TYPE_SCROLL_SENSITIVE,游標(biāo)可上下移動,當(dāng)數(shù)據(jù)庫變化時,當(dāng)前結(jié)果集同步改變。

int 型參數(shù)concurrency決定數(shù)據(jù)庫是否與可滾動集同步更新:

  • ResultSet.CONCUR_READ_ONLY,不能用結(jié)果集更新數(shù)據(jù)庫中的表。
  • ResultSet.CONCUR_UPDATETABLE,能用結(jié)果集更新數(shù)據(jù)庫中的表。

例如,以下代碼利用連接對象connect,創(chuàng)建Statement對象stmt,指定結(jié)果集可滾動,并以只讀方式讀數(shù)據(jù)庫:

  stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
  ResultSet.CONCUR_READ_ONLY);


可滾動集上另外一些常用的方法如下:

  • boolean previous():將游標(biāo)向上移動,當(dāng)移到結(jié)果集的第一行時,返回false。
  • void beforeFirst():將游標(biāo)移結(jié)果集的第一行之前。
  • void afterLast():將游標(biāo)移到結(jié)果集的最后一行之后。
  • void first():將游標(biāo)移到第一行。
  • void last():將游標(biāo)移到最后一行。
  • boolean isAfterLast():判游標(biāo)是否在最后一行之后。
  • boolean isBeforeFirst():判游標(biāo)是否在第一行之前。
  • boolean isLast():判游標(biāo)是否在最后一行。
  • boolean isFirst():判游標(biāo)是否在第一行。
  • int getRow():獲取當(dāng)前所指的行(行號自1開始編號,結(jié)果集空,返回0)。
  • boolean absolute(int row):將游標(biāo)移到row行。

相關(guān)文章

  • Java中RabbitMQ隊列實現(xiàn)RPC詳解

    Java中RabbitMQ隊列實現(xiàn)RPC詳解

    這篇文章主要介紹了Java中RabbitMQ隊列實現(xiàn)RPC詳解,在本教程中,我們將使用RabbitMQ構(gòu)建一個RPC系統(tǒng):一個客戶端和一個RPC服務(wù)器,我們將創(chuàng)建一個返回斐波那契數(shù)字的模擬RPC服務(wù),,需要的朋友可以參考下
    2023-08-08
  • Springboot POI導(dǎo)出Excel(瀏覽器)

    Springboot POI導(dǎo)出Excel(瀏覽器)

    這篇文章主要為大家詳細介紹了Springboot POI導(dǎo)出Excel,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java?函數(shù)式編程梳理

    Java?函數(shù)式編程梳理

    這篇文章主要介紹了Java?函數(shù)式編程梳理,文章通過Lambda表達式展開詳細的內(nèi)容介紹,具有一定參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 解決gateway報netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemoryError

    解決gateway報netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemor

    這篇文章主要介紹了解決gateway報netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemoryError,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java實現(xiàn)List中對象排序的方法

    java實現(xiàn)List中對象排序的方法

    這篇文章主要介紹了java實現(xiàn)List中對象排序的方法,涉及Java中的遍歷與對象操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Java中的封裝、繼承和多態(tài),你真的都懂了嗎

    Java中的封裝、繼承和多態(tài),你真的都懂了嗎

    Java中的封裝、繼承和多態(tài)知識點是學(xué)習(xí)java必備的基礎(chǔ)知識,看似簡單,真正理解起來還是有一定難度的,今天小編再次通過實例代碼給大家講解java 封裝繼承多態(tài)知識,感興趣的朋友一起學(xué)習(xí)下吧
    2021-05-05
  • java分布式面試系統(tǒng)限流最佳實踐

    java分布式面試系統(tǒng)限流最佳實踐

    這篇文章主要介紹了java分布式面試系統(tǒng)限流最佳實踐場景分析解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • Java中數(shù)組的定義和使用教程(三)

    Java中數(shù)組的定義和使用教程(三)

    這篇文章主要給大家介紹了關(guān)于Java中數(shù)組的定義和使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • SpringBoot中使用redis做分布式鎖的方法

    SpringBoot中使用redis做分布式鎖的方法

    這篇文章主要介紹了SpringBoot中使用redis做分布式鎖的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java并發(fā)之搞懂讀寫鎖

    Java并發(fā)之搞懂讀寫鎖

    這篇文章主要介紹了Java并發(fā)之讀寫鎖,文中相關(guān)實例代碼詳細,測試可用,具有一定參考價值,需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-11-11

最新評論