什麼是JDBC?
Java語言通路資料庫的一種規範,是一套API
JDBC (Java Database Connectivity)
API,即Java資料庫程式設計接口,是一組标準的Java語言中的接口和類,使用這些接口和類,Java用戶端程式可以通路各種不同類型的資料庫。比如建立資料庫連接配接、執行SQL語句進行資料的存取操作。
JDBC規範采用接口和實作分離的思想設計了Java資料庫程式設計的架構。接口包含在java.sql及javax.sql包中,其中java.sql屬于JavaSE,javax.sql屬于JavaEE。這些接口的實作類叫做資料庫驅動程式,由資料庫的廠商或其它的廠商或個人提供。
為了使用戶端程式獨立于特定的資料庫驅動程式,JDBC規範建議開發者使用基于接口的程式設計方式,即盡量使應用僅依賴java.sql及javax.sql中的接口和類。
JDBC驅動程式:
什麼是JDBC驅動程式?
這些是各個資料庫廠家根據JDBC的規範制作的JDBC實作類
JDBC驅動程式的四種類型:
1. 第一種類型的驅動程式的實作是通過将JDBC的調用全部委托給其它程式設計接口來實作的,比如ODBC。這種類型的驅動程式需要安裝本地代碼庫,即依賴于本地的程式,是以便攜性較差。比如JDBC-ODBC橋驅動程式
2. 第二種類型的驅動程式的實作是部分基于Java語言的。即該驅動程式一部分是用Java語言編寫,其它部分委托本地的資料庫的用戶端代碼來實作。同類型1的驅動一樣,該類型的驅動程式也依賴本地的程式,是以便攜性較差
3. 第三種類型的驅動程式的實作是全部基于JAVA語言的。該類型的驅動程式通常由某個中間件伺服器提供,這樣用戶端程式可以使用資料庫無關的協定和中間件伺服器進行通信,中間件伺服器再将用戶端的JDBC調用轉發給資料庫進行處理
4. 第四種類型的驅動程式的實作是全部基于JAVA語言的。該類型的驅動程式中包含了特定資料庫的通路協定,使得用戶端可以直接和資料庫進行通信
JDBC類結構:
DriverManager
Driver Driver
Connection Connection
Statement Statement
Resultset Resultset
DriverManager:這個是一個實作類,它是一個工廠類,用來生産Driver對象的
這個類的結構設計模式為工廠方法
Driver:這是驅動程式對象的接口,它指向一個實實在在的資料庫驅動程式對象,那麼這個資料庫驅動程式對象是從哪裡來的呢?
DriverManager工廠中有個方法:getDriver(String
URL),通過這個方法可以得到驅動程式對象,這個方法是在各個資料庫廠商按JDBC規範設計的資料庫驅動程式包裡的類中靜态實作的,也就是在靜态塊中
Connection:這個接口可以制向一個資料庫連接配接對象,那麼如何得到這個連接配接對象呢?
是通過DriverManager工廠中的getConnection(String
URL)方法得到的
Statement:用于執行靜态的SQL語句的接口,通過Connection中的createStatement方法得到的
Resultset:用于指向結果集對象的接口,結果集對象是通過Statement中的execute等方法得到的
JAVA使用JDBC通路資料庫的步驟:
1. 得到資料庫驅動程式
2. 建立資料庫連接配接
3. 執行SQL語句
4. 得到結果集
5. 對結果集做相應的處理(增,删,改,查)
6. 關閉資源:這裡釋放的是DB中的資源
設定classpath:
1. 在java檔案中起的包名一定要是工程基目錄下的子目錄,classpath:基目錄
2. .jar包,需要将這個.jar包的路徑包括這個檔案的全名添加到classpath中來
Oracle連接配接字元串的書寫格式:
“oracle:jdbc:thin:@ip:1521: 資料庫名”,”資料庫使用者名”,”資料庫密碼”
簡單的例子:
package
moudule1.first;
import
java.sql.*;
public
class FirstJdbc
{
public static void main(String[] args)
String sql="select * from yuchen_user";
Connection con=null;
Statement st=null;
ResultSet rs=null;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:name",
"scott","tiger");
st=con.createStatement();
rs=st.executeQuery(sql);
while(rs.next())
System.out.println(rs.getInt("id"));
System.out.println(rs.getString("name"));
}
}catch(Exception e)
{
e.printStackTrace();
}finally
try
con.close();
}catch(Exception
e)
{}
st.close();
rs.close();
}
常用資料庫的驅動程式及JDBC
URL:
Oracle資料庫:
驅動程式包名:ojdbc14.jar
驅動類的名字:oracle.jdbc.driver.OracleDriver
JDBC
URL:jdbc:oracle:thin:@dbip:port:databasename
說明:驅動程式包名有可能會變
JDBC
URL中黑色字型部分必須原封不動的保留,為該驅動識别的URL格式。紅色字型部分需要根據資料庫的安裝情況填寫。其中各個部分含義如下:
dbip –為資料庫伺服器的IP位址,如果是本地可寫:localhost或127.0.0.1。
port –為資料庫的監聽端口,需要看安裝時的配置,預設為1521。
databasename –為資料庫的SID,通常為全局資料庫的名字。
舉例如果要通路本地的資料庫allandb,端口1521,那麼URL寫法如下:
jdbc:oracle:thin:@localhost:1521:allandb 下載下傳位址如下:
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
SQL
Server資料庫
驅動程式包名:msbase.jar
mssqlserver.jar msutil.jar
驅動類的名字:com.microsoft.jdbc.sqlserver.SQLServerDriver
JDBC
URL:jdbc:microsoft:sqlserver://dbip:port;DatabaseName=databasename
說明:驅動程式包名有可能會變
URL中黑色字型部分必須原封不動的保留,為該驅動識别的URL格式。紅色字型部需要根據資料庫的安裝情況填寫。其中各個部分含義如下:
port –為資料庫的監聽端口,需要看安裝時的配置,預設為1433。
databasename –資料庫的名字。
舉例如果要通路本地的資料庫allandb,端口1433,那麼URL寫法如下:
jdbc: microsoft: sqlserver:@localhost:1433; DatabaseName
=allandb
下載下傳位址:http://www.microsoft.com/downloads/details.aspx
MySQL資料庫
驅動程式包名:mysql-connector-java-3.1.11-bin.jar
驅動類的名字:com.mysql.jdbc.Driver
URL:jdbc:mysql://dbip:port/databasename
port –為資料庫的監聽端口,需要看安裝時的配置,預設為3306。
舉例如果要通路本地的資料庫allandb,端口1433,那麼URL寫法如下:
jdbc:mysql://localhost:3306/allandb
下載下傳位址:http://dev.mysql.com/downloads/connector/j/
Access資料庫
驅動程式包名:該驅動程式包含在JavaSE中,不需要額外安裝。
驅動類的名字:sun.jdbc.odbc.JdbcOdbcDriver
URL:jdbc:odbc:datasourcename
說明:該驅動隻能工作在Windows系統中,首先需要在作業系統中建立一個可以通路Access資料庫的本地資料源(ODBC),如果名字為allandb,那麼URL寫法如下:
jdbc:odbc:allandb