一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Java程序連接數(shù)據(jù)庫(kù)的常用的類和接口介紹

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

2020-01-09 14:17goldensun JAVA教程

這篇文章主要介紹了Java程序連接數(shù)據(jù)庫(kù)的常用的類和接口,包括Connection類和Statement類等,需要的朋友可以參考下

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

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

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


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

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

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

Statement類

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

?
1
2
3
4
Statement sql = null;
try{
  sql = con.createStatement();
}catch(SQLException e){}


ResultSet類

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

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


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

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

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

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

?
1
2
Statement stmt = con.createStatement(type,concurrency);
ResultSet rs = stmt.executeQuery(SQL語(yǔ)句)


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

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

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

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

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

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


可滾動(dòng)集上另外一些常用的方法如下:

  • boolean previous():將游標(biāo)向上移動(dòng),當(dāng)移到結(jié)果集的第一行時(shí),返回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)前所指的行(行號(hào)自1開(kāi)始編號(hào),結(jié)果集空,返回0)。
  • boolean absolute(int row):將游標(biāo)移到row行。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 9999视频| 亚洲第一网色综合久久 | 欧亚专线欧洲m码可遇不可求 | 国产精品99爱免费视频 | www.爱情岛论坛 | 男人免费视频 | 爱情岛论坛自拍永久入口 | 王淑兰李思雨李铁柱乡村小说免费 | 性夜影院午夜看片 | 二区三区不卡不卡视频 | 亚洲 小说 欧美 激情 另类 | 欧美精品久久久久久久免费观看 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 免费的毛片视频 | 日韩成人在线免费视频 | 高清一级做a爱免费视 | 亚洲2017天堂色无码 | 国产伦码精品一区二区三区 | 紧缚束缚调教丨vk | 99国内精品久久久久久久黑人 | 免费在线观看成年人视频 | 女明星放荡高h日常生活 | 毛毛片在线 | 末发育xxxxx仙踪林 | 国产精品午夜性视频网站 | 高跟丝袜人妖sissy露出调教 | 国产欧美一区二区三区久久 | 久久精品国产免费 | 韩国伦理hd | 草草视频免费在线观看 | 东北疯狂xxxxbbbb中国 | 97久久免费视频 | 国产成人精品视频午夜 | 国产精品久久久久不卡绿巨人 | 91精品国产高清久久久久 | 骚虎网站在线观看 | 青青草原手机在线视频 | 欧美日韩国产手机在线观看视频 | 四虎影院2022| 99视频在线看 | 西西人体大胆啪啪私拍色约约 |