JDBC課程目標:
1、設計一個多層資料庫應用程式體繫結構
2、建立一個多層次的資料庫應用程式利用Java程式設計語言內容
和JDBC1.0的API
3、面對對象中關聯式資料庫設計
4、 介紹JDBC2.0的api以及JDBC的新功能
課程主要內容:
1、JDBC的概述
2、JDBC的使用
3、OOAD和資料庫的設計
4、 JDBC的進階部分
1、JDBC的概述
1)、ODBC(開放式資料庫互連)
微軟、C語言寫
2)、JDBC(Java資料庫連接)
SUN、純Java語言編寫
JDBC串連方式:
1、JDBC-ODBC橋驅動及ODBC驅動程式
優點:
只需要用戶端安裝對應的ODBC驅動
缺點:
1、執行效率低,不適合大資料量串連;
2、必須在用戶端安裝ODBC驅動。
2、本地API部分Java驅動程式
實現:1、安裝Java驅動程式
2、安裝資料庫的用戶端
3、JDBC-Net 純Java驅動程式 oci
優點:可以適用於網路連接;
缺點:多一個中介軟體
4、本地協議純Java驅動程式 thin
優點:速度快、網路連接
缺點:根據不同的資料庫載入不同的資料庫驅動。
1995年SUN公司JavaONE大會
1、採用C語言開發的,指標
2、ODBC配置比較複雜,不適合Java語言的特性;
3、JDBC-ODBC橋驅動大部分只適合測試,並不能進行產品操作。
2、JDBC的使用
使用java.sql:主要是進行資料庫連接的基本操作;
javax.sql:對應Java應用程式對資料庫的進階操作。
JDBC的串連步驟:
1、註冊驅動
建立驅動類型的對象;
把這個對象註冊到相應的程式中。
反射(得到一個類):
1、Class c=類名.class
2、類名.getClass();
3、Class.forName(類全名);
實現方式:
1)、Class.forName("類全名");
2)、Driver driver=new oracle.jdbc.driver.OracleDriver();
2、建立串連
Connection介面。
Connection conn=DriverManager.getConnection(url);
Oracle資料庫的url:
jdbc:oracle:thin:@127.0.0.1:1521:XE
jdbc:連線協定——進行JDBC的串連;
oracle:串連的資料庫(子協議);
thin:串連方式 (oci)
@172.0.0.1=localhost:IP地址
1521:連接埠號碼
XE:資料庫名稱(select name from v$database)
mySql串連資料庫
類全名:com.mysql.jdbc.Driver
URL:jdbc:mysql://localhost:3306/資料庫名
3、建立Statement
Statement 建立方式:conn.createStatement();
作用:執行靜態SQL語句;
execute(String sql);
根據不同的SQL返回不同的結果;
executeQuery(String sql);
//進行查詢操作(select),返回一個結果集ResultSet
executeUpdate(String sql);
//進行更新操作(update,insert)
//返回int類型的資料
4、執行SQL語句
5、處理結果集
6、關閉串連
使用的類或介面:
Driver:所有的驅動程式必須實現的介面,類似於
硬體中的需要安裝驅動。
DriverManager:主要用於管理資料庫串連的驅動
程式。
Connection:用於Java應用程式和資料庫之間建立串連。
例子:-----------------》》》》
TestJdbc.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 這是一個java 串連 oracle 的例子
*/
public class TestJdbc {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
try {
//註冊驅動
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立串連
try {
//XE是資料庫名字
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
//system 是使用者名稱 123456 是密碼
conn = DriverManager.getConnection(url,"system","123456");
//建立statement
st = conn.createStatement();
//定義sql語句
String sql="insert into test values(1,'name')";
//執行sql語句 ,得到的是int類型
int num =st.executeUpdate(sql);
System.out.println("已成成功插入"+num+"條資料!");
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{//異常處理..
try {
if(conn !=null){//關閉串連
conn.close();
}
if(st!=null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}