JDBC訪問數據庫(內含詳解與步驟)

JDBC(Java DataBase Connectivity)


1、基礎知識

1)規範(標準):SUN制定的JAVA應用程序連接數據庫的規範(標準)。

2)類和接口的集合。

3)作用:連接到一個數據庫並對數據庫進行查詢、更新。
這裏寫圖片描述

2、JDBC設計

1)JDBC結構:Java程序,JDBC管理器,驅動程序,數據庫四部分

    使用JDBC/ODBC橋來利用ODBC的接口訪問數據庫
    通過直接的JDBC驅動程序來實現數據庫的訪問

2)JDBC的典型用法
基於傳統C/S模式的數據庫訪問
這裏寫圖片描述

3)三層應用模式
這裏寫圖片描述

3、 Java中JDBC的使用

用於JDBC編程的類都包含在java.sql 包 中

- DriverManager驅動程序管理類:

用來裝載驅動程序,管理各種不同的數據庫驅動程序,並且爲創建新的數據庫聯接提供支持。

 public static synchronize Connection getConnection(String url,String user,String password)

url形式爲:

 jdbc:<subprotocol>:<subname>

數據庫的位置:數據庫所在的主機,所使用的端口

  Oracle:1521;
  MicroSoft SQL Server:1433;
  MySQL:3306。

數據庫的信息:數據庫的名字。

 jdbc:mysql://localhost:3306/bookstore

用於建立一個到達指定數據庫的連接,返回一個Connection對象。

- Connection類

代表應用程序到數據庫的一個連接,完成對某一指定數據庫的聯接

statement creatStatement()

用於建立一個語句對象,以便執行沒有參數的SQL查詢和更新。

void close();

用於關閉當前的連接

- Statement類

用來執行查詢和更新操作

1)ResultSet executeQuery(String sql)

執行SQL語句,返回結果爲ResultSet對象

2)boolean execute(String sql)

執行sql語句,若結果爲ResultSet則返回true,否則返回false。可使用getResultSet方法或getUpdateCount方法運行結果

3)ResultSet getResultSet()

返回目前的ResultSet

4)int executeUpdate(String sql)

執行SQL語句Insert,Update,Delete,返回行數或0,另外它也可以執行DDL(Data Definition Lanbuage)語言。

5)void close()

釋放Statement所連接的數據庫和JDBC資源。

- ResultSet類

執行查詢後返回的結果集

1)xxx getxxx(int columnindex)

xxx getxxx(String columnName)

xxx表示一個類型:int、double、String、data

2)boolean next()

返回下一記錄,沒有時返回false

3)void close()
釋放ResultSet資源
這裏寫圖片描述

4、主要過程實現

1) 建立JDBC-ODBC橋接器

調用Class類中的靜態方法forName()
如果無法找到指定的驅動程序類名,forName()方法會拋出
ClassNotFoundException的異常。

使用Class.forName(“驅動程序名字”)顯式加載驅動程序。
例如:

 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
 MySQL: com.mysql.jdbc.Driver
 Oracle: oracle.jdbc.drive.OracleDriver
 SQL Server: com.microsoft.jdbc.sqlserver.SQLServerDriver

2 )連接到數據庫
- 指定數據庫連接的url,數據源的位置
- 使用DriverManager.getConnection(url);

例如:

String url=“jdbc:odbc:datasource”;
Connection conn=DriverManager.getConnection(url);

或者:

Connection conn=DriverManager.getConnection(String url , String   user , String  password)

eg:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookstore","root","root");

3)向數據庫發送SQL語句

try{
    Statement sql = con.createStatement();
}catch(SQLException e){
    ...
}

4)處理查詢結果
SQL語句對數據庫的查詢操作將返回一個ResultSet對象

 ResultSet rs = sql.executeQuery("SQL語句")

ResultSet對象一次只能看到一個數據行,若想顯示所有的數據行,可用next()實現:

 while(rs.next()){

 }

5、通過JDBC訪問數據庫的基本流程

1)基本流程
- 建立ODBC數源(可選)
- 裝入JDBC驅動程序
- 建立連接
- 執行SQL語句
- 檢索結果
- 關閉連接
2)關閉相關對象
結果集對象、語句對象、連接對象
rs.close();
stmt.close();
con.close();

這裏寫圖片描述

6、PreparedStatement類

  • Statement對象在每次執行sql語句時都將語句傳給數據庫,在多次執行同一個語句時,效率比較低。而prepared語句在它被應用程序調用之前就被送到數據庫進行解釋。這種方法的好處在於當程序包含了相同的SQL語句時,可以提高程序的執行效率。
  • 當需要在同一個數據庫表中完成一組記錄的更新時,可以使用PreparedStatement類,比如:如果需要一次更新多條顧客的購物金額記錄時。
  • PreparedStatement對象的sql語句可以接受參數,每次執行時可以傳遞不同的參數.
  • PreparedStatement提供了setXXX()方法
    setString( )、setFloat( ) 、setInt( )
    1)創建
String sql=“select * from customer where age=?”
PreparedStatement pstmt=conn.prepareStatement(sql);

2)執行

pstmt.setInt(1,30);
ResultSet=pstmt.executeQuery();

3)關閉

pstmt.close();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章