1. 程式人生 > >J2EE技術規範(二)——JDBC

J2EE技術規範(二)——JDBC

一、瞭解JDBC

(1) JDBC是以統一方式訪問資料庫的API

(2) JDBC提供:

    獨立於平臺的資料庫訪問

    位置透明

    對專有資料庫的問題時透明的

二、瞭解JDBC驅動程式

(1) JDBC Drivers是實現資料庫操作的類

(2) Drivers分成兩類:

  2-層——客戶直接和資料庫會話

  3-層——客戶與代表資料庫的中間層(WebLogic Server)會話

其實也就是:兩層架構直接與資料庫進行處理

三層架構載入資料庫的中間層

這些跟.net幾乎沒什麼差別。我們繼續來看一個圖:

我們看這個圖有什麼想發?

第4種:居於Java特色的。不需要安裝軟體和客戶端;跟位置與平臺是沒有關係的。,

第1、2、4:都是兩層的型別,直接連線到資料庫的

第3種:基於NetworkServer集中式的監控,遮蔽丟不同的平臺。在1、2、4的基礎上,通過webserver來連線的一種資源。是一種特殊的jdbC的型別

三、使用JDBC直接訪問資料庫

(1) 直接訪問資料庫由下列組成:

     載入JDBC驅動器類

我們看一下直接連線資料庫的示例:

(2) 使用基本的JDBC命令

import java.sql.*;
try{
   class.forName("com.pointbase.jdbc.jdbcUniversalDriver");
   Connection con=DriverManager.getConnect("jdbc:pointbase;//server:port/MyDatabase");
   Statement stmt=con.createStatement();
   String sql="select * from mytable";
   ResultSet res=stmt.executeQuery(sql);
   while(res.next()){
        String col1=res.getString("MYCOLUMN1");
        int col2=res.getInt("MYCOLUMN2");    
   }catch(Exception e){...}
}

四、使用多層(Type3)Drivers

要使用多層體系結構,必須至少配置一個連線池(Connection Pool和一個數據源(DataSource)


五、連線池Connection

連線池:

    消除頻繁建立連線所需的負載

    是用於管理資料庫連線的管理物件

    提供可共享,安全的連線


六、資料來源Data Sources

Data Sources是:

    從連線池中提供連線的被管理的工廠物件

    繫結到JNDI並使用管理控制檯配置

七、我們通過資料來源Data Sources訪問資料庫

(1) 使用DataSource:

    先在JNDI中查詢到它

    然後從DataSource獲得一個連線

使用資料來源連線資料庫的示例:

import java.sql.*;import javax.sql.*;import javax.naming.*;...
try{

	context ctx=new InitialContext();
	DataSource ds=(DataSource)ctx.lookup("TestDataSource");
	Connection con=ds.getConnection();
	Statement stmt=con.createStatement();
	String sql="SELECT * FROM MYTABLE";
	ResultSet res=stmt.executeQuery(sql);
	While(res.next()){
	  String col1=res.getString("MYCOLUM1");
	  ...
}
	con.close();
}catch(Exception e){...}

八、Statements和Prepared Statements

(1) Statement物件含有與資料庫互動的SQL查詢或更新語句

  使用Statement物件查詢資料庫的示例:

Statement stmt=con.createStatement();
String sql="SELECT * FROM MYTABLE";
ResultSet res=stmt.excuteQuery(sql);

使用PreparedStatement物件查詢資料庫的示例:

String sql="SELECT * FROM MYTABLE WHERE COL1=? AND COL2=?";
PreparedStatement pStatement=con.prepareStatement(sql);
pStatement.setString(1,searchVariableString);
pStatement.setInt(2,searchVariableInt);
ResultSet rs=pStatement.executeQuery();

這只是初步瞭解,還需要應用到專案當中去呀。