一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

java_JDBC編程

 懷舊妞妞 2010-10-18

JDBC編程的基本步驟是設(shè)置數(shù)據(jù)源、加載JDBC驅(qū)動器程序、指定數(shù)據(jù)庫、打開數(shù)據(jù)庫連接、提交查詢、處理查詢結(jié)果等。

1.statement對象

private Map getsysIdAndNameMap(ConnectionManager cm){
  Connection conn = this.initNewConn(cm);
  Map<String,Long> map = new HashMap<String,Long>();
  ResultSet rs = null;
  Statement statement = null;
  try {
   String sql = "select t.sid,t.name from systeminfo t";
   statement = conn.createStatement();
   rs = statement.executeQuery(sql);
   while(rs.next()){
    Long id = rs.getLong("sid");
    String name = rs.getString("name");
    map.put(name, id);
   }
  } catch (Exception e) {
   System.out.println("獲取new系統(tǒng)表ID,名稱鍵值對--SQL執(zhí)行異常");
  }finally{
   try {
    rs.close();
    statement.close();
    conn.close();
   } catch (SQLException e) {
    System.out.println("獲取new系統(tǒng)表ID,名稱鍵值對--關(guān)閉數(shù)據(jù)庫連接異常");
   }
   
  }
  return map;
 }
 

2:PreparedStatement

2.1.使用PreparedStatement進行預編譯操作

在前面已經(jīng)學過,Statement是一個實現(xiàn)Statement接口的類的對象,用于將SQL語句發(fā)送到數(shù)據(jù)庫中。當一個Statement對象被創(chuàng)建時,它提供了一個創(chuàng)建SQL查詢、執(zhí)行該查詢和檢索返回結(jié)果的作用。

2.2.  PreparedStatement簡介

PreparedStatement接口繼承自Statement,與Statement相比,PreparedStatement增加了在執(zhí)行SQL調(diào)用之前,將輸入?yún)?shù)綁定到SQL調(diào)用中的功能。它用于執(zhí)行帶或不帶輸入?yún)?shù)的預編譯SQL語句。因為PreparedStatement對象已編譯過,所以執(zhí)行速度要快于Statement對象。因此當需要多次調(diào)用一條SQL語句時,可以考慮使用PreparedStatement接口。

PreparedStatement接口繼承了Statement的所有方法,同時還增加了一些方法,還更改了以下3個很重要的方法。

setXXX()

executeQuery()

executeUpdate()

其中setXXX()方法中的XXX指的是該參數(shù)對應(yīng)的類型。例如參數(shù)是String類型,則方法為setString()。setXXX()方法有兩個參數(shù),第1個參數(shù)是指要設(shè)置參數(shù)的位置,第2個是指要設(shè)置的具體值。還以開始時舉的例子為例:

如果基本數(shù)據(jù)庫和驅(qū)動程序在語句提交之后仍保持這些語句的打開狀態(tài),則同一個 PreparedStatement可執(zhí)行多次。如果這一點不成立,那么試圖通過使用PreparedStatement 對象代替Statement對象來提高性能是沒有意義的。

2.3.使用示例

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//打開數(shù)據(jù)庫連接,aaa為數(shù)據(jù)源名稱
Connection con=DriverManager.getConnection("jdbc:odbc:aaa","","");
//提交查詢 
PreparedStatement ps=
con.prepareStatement("select * from emp where dal>?");
ps.setString(1,"2000");
ResultSet rs=ps.executeQuery();
//查看結(jié)果
System.out.println("empno\tempname\tjob\thiredate\tdal");
while(rs.next())

3:ResultSet 對象

ResultSet rs = stmt.executeQuery("select distinct logid from stat_data");
  rs.last(); //結(jié)果集指針知道最后一行數(shù)據(jù)
  int n = rs.getRow();
  System.out.println(n);
  rs.beforeFirst();//將結(jié)果集指針指回到開始位置,這樣才能通過while獲取rs中的數(shù)據(jù)
  while(rs.next()){
   System.out.println(rs.getInt(1));
  }
 }

4事務(wù)操作:

1.  概述:

在jdbc的數(shù)據(jù)庫操作中,一項事務(wù)是由一條或是多條表達式所組成的一個不可分割的工作單元。我們通過提交commit()或是回滾rollback()來結(jié)束事務(wù)的操作。關(guān)于事務(wù)操作的方法都位于接口java.sql.Connection中。

2.  特點:
★ 在jdbc中,事務(wù)操作缺省是自動提交。也就是說,一條對數(shù)據(jù)庫的更新表達式代表一項事務(wù)操作,操作成功后,系統(tǒng)將自動調(diào)用commit()來提交,否則將調(diào)用rollback()來回滾。
★ 在jdbc中,可以通過調(diào)用setAutoCommit(false)來禁止自動提交。之后就可以把多個數(shù)據(jù)庫操作的表達式作為一個事務(wù),在操作完成后調(diào)用commit()來進行整體提交,倘若其中一個表達式操作失敗,都不會執(zhí)行到commit(),并且將產(chǎn)生響應(yīng)的異常;此時就可以在異常捕獲時調(diào)用rollback()進行回滾。這樣做可以保持多次更新操作后,相關(guān)數(shù)據(jù)的一致性,示例如下:

    try {

conn =

DriverManager.getConnection   

(jdbc:oracle:thin:@host:1521:SID,username,userpwd;

       conn.setAutoCommit(false);//禁止自動提交,設(shè)置回滾點

       stmt = conn.createStatement();

stmt.executeUpdate(“alter table …”); //數(shù)據(jù)庫更新操作1

stmt.executeUpdate(“insert into table …”); //數(shù)據(jù)庫更新操作2

       conn.commit(); //事務(wù)提交

     }catch(Exception ex) {   

         ex.printStackTrace();

         try {

          conn.rollback(); //操作不成功則回滾

          }catch(Exception e) {

e.printStackTrace();

           }

}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美一区二区三区五月婷婷| 国产对白老熟女正在播放| 日韩精品小视频在线观看| 国产精品偷拍一区二区| 粉嫩国产美女国产av| 日本特黄特色大片免费观看| 日韩欧美一区二区黄色| 中文字幕91在线观看| 亚洲熟妇中文字幕五十路| 国产精品欧美一级免费| 99久免费精品视频在线观| 视频在线播放你懂的一区| 粉嫩内射av一区二区| 欧美尤物在线视频91| 国产免费一区二区三区av大片| 少妇淫真视频一区二区| av一区二区三区天堂| 美女黄色三级深夜福利| 国产日韩综合一区在线观看| 加勒比东京热拍拍一区二区| 成人午夜激情在线免费观看| 国产精品福利一二三区| 亚洲国产精品一区二区毛片| 国产欧美亚洲精品自拍| 日本不卡一本二本三区| 高清一区二区三区大伊香蕉| 欧美成人国产精品高清| 激情爱爱一区二区三区| 樱井知香黑人一区二区| 国产精品视频一级香蕉| 亚洲国产精品久久网午夜| 女人精品内射国产99| 精品女同在线一区二区| 日韩精品一级一区二区| 精品国产av一区二区三区不卡蜜 | 伊人网免费在线观看高清版| 国产亚洲欧美另类久久久| 五月综合激情婷婷丁香| 亚洲一区二区三区在线免费| 国内午夜精品视频在线观看| 国产欧美日韩精品成人专区|