- 什麼是JDBC?
JDBC全稱Java Data Base Connectivity,意義爲Java數據庫連接,由一些接口和類構成的API,使用使用它可很方便很容易的操作關係型數據庫。它J2SE的一部分,由java.sql,javax.sql包組成。這裏補充一下:
- java.sql.* : 屬於jdbc2.0版本
- javax.sql.* : 屬於jdbc3.0版本,是2.0拓展,加了一些屬性,例如:數據庫連接池,分佈式事務處理。
2. 什麼是JDBC驅動
驅動程序是知道如何與實際數據庫服務進行會話的軟件部件。JDBC是JDBC接口的具體實現,不同的數據庫廠商有不同的實現,通常都會打包成jar包。JDBC驅動類型總共有四類,通常用純java的驅動。
3. 如何連接數據庫
A : 載入JDBC驅動
針對不同的數據庫,可以去下載不同的驅動。載入驅動的方式可以通過Class.forName或者Properties工具
a)例如oracle數據庫:
- Class.forName("oracle.jdbc.driver.OracleDriver");
爲了方便,可以定義一個常量:
- private final String ORACLEDRIVER = "oracle.jdbc.driver.OracleDriver";
其實ORACLEDRIVER的值是個路徑。
b)Properties工具:
這個實現有點複雜,首先,得建立一個名叫DB.properties文件,在裏定義:driverClassName=oracle.jdbc.driver.OracleDriver;
然後在構建一個類,進行讀取:具體代碼如下:
- Properties prop =new Properties();
- prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("DB.properties"));
- ORACLEDRIVER = prop.getProperty(" driverClassName ");
這樣就完成了驅動的載入。
B : 定義並連接URL
有以後二個類使用到:Connection,DriverManager。關於這個二類具體的用法可見參考文檔。
URL通常包括:jdbc:協議:@主機名:端口號:數據庫
例如oracle 的URL: jdbc:oracle:thin:@localhost:1521:orcl;
a)接着定義常量:用戶名與密碼
- private final String USERNAME = "xxxx";
- private final String PASSWORD= "xxxx";
- Connection conn=DriverManager.getConnection(URL,USERNAME,PASSWORD );
b)在DB.properties裏面定義:
USERNAME =XXXXX
PASSWORD=XXXXX
URL=jdbc:oracle:thin:@localhost:1521:orcl
然後調用getProperty("參數"),進行引用。
- Connection conn=DriverManager.getConnection(URL,USERNAME,PASSWORD );
這樣就定義並且連接好,但是別忘記try{}catch(){},當然throws異常也可以。
具體代碼如下:
版本一號:
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- //用於連接數據庫
- public class Jdbc {
- private final String ORACLEDRIVER ="oracle.jdbc.driver.OracleDriver";//驅動名。
- private final String URL="jdbc:oracle:thin:@localhost:1521:orcl";//url。
- private final String USERNAME="XXX";//數據庫名。
- private final String PASSWORD="XXXX";//密碼。
- private Connection conn=null;
- public Jdbc()
- {
- //加載驅動
- try {
- Class.forName(ORACLEDRIVER);
- this.conn=DriverManager.getConnection(URL, USERNAME, PASSWORD);
- } catch (ClassNotFoundException e)
- {
- System.out.println("驅動加載異常");
- }catch(SQLException e)
- {
- System.out.println("沒有連接到數據庫");
- }
- }
- //建立一個方法獲得連接
- public Connection getInstance()
- {
- return this.conn;
- }
- //如果this.conn!=null;則把它關閉。
- public void close()
- {
- if(this.conn!=null)
- {
- try {
- this.conn.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- 版本二:爲區分,就用不同的名字。
- DB.properties文件:
- user=zhangzhi
- password=feiyang
- url=jdbc:oracle:thin:@localhost:1521:orcl
- driverClassName =oracle.jdbc.driver.OracleDriver
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import java.util.Properties;
- public class DB {
- private static Connection conn = null;
- private static String url = null;
- private static String username = null;
- private static String password = null;
- private static String driver = null;
- private static Properties prop = null;
- static{
- prop = new Properties();
- try {
- prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("DB.properties"));
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- driver = prop.getProperty("driverClassName");
- url = prop.getProperty("url");
- username = prop.getProperty("username");
- password = prop.getProperty("password");
- }
- public static Connection getconn() throws ClassNotFoundException, SQLException{
- Class.forName(driver);
- return conn = DriverManager.getConnection(url,username,password);
- }
- }