JDBC入門知識整理

JDBC:java database connectivity SUN公司提供的一套操作數據庫的標準規範

JDBC與數據庫驅動的關係:接口與實現的關係

 

JDBC規範

掌握四個核心對象

  • DriverManager:用於註冊驅動
  • Connection: 表示與數據庫創建的連接
  • Statement: 操作數據庫sql語句的對象
  • ResultSet: 結果集或一張虛擬表

JDBC的準備工作:

JDBC規範(接口)在哪裏:

 JDK中:     java.sql.*;       javax.sql.*;

數據庫廠商提供的驅動:mysqll-connector-java-xxx-bin.jar文件(需要根據mysql和Java版本確定)

JDBC常用的類和接口詳解

DriverManager

java.sql.Drivermanager類 : 註冊驅動和創建連接

a、註冊驅動

DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建議使用

原因有2個:

> 導致驅動被註冊2次,靜態代碼塊裏又註冊了一次。

> 強烈依賴數據庫的驅動jar

解決辦法

Class.forName("com.mysql.jdbc.Driver");

b.與數據庫建立連接

根據API

第一種方式:

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

試圖建立到給定數據庫 URL 的連接。

 

getConnection("jdbc:mysql://localhost:3306/test1", "root", "123456");

URL:SUN公司與數據庫廠商之間的一種協議。

jdbc:mysql://localhost:3306/day06

協議 子協議  IP :端口號 數據庫名

mysql: jdbc:mysql://localhost:3306/test1 或者 jdbc:mysql:///test1(默認本機連接)

第二種方式:

Properties info = new Properties();//要參考數據庫文檔

info.setProperty("user", "root");

info.setProperty("password","root");

 

getConnection(String url, Properties info)

第二種方式

getConnection(String url)

DriverManager.getConnection("jdbc:mysql://localhost:3306/test1?user=root&password=123456");

Connection接口

接口的實現在數據庫驅動中。所有與數據庫交互都是基於連接對象的。

 

Statement接口

操作sql語句,並返回相應結果的對象

接口的實現在數據庫驅動中。用於執行靜態 SQL 語句並返回它所生成結果的對象。

  • ResultSet  executeQuery(String sql) 根據查詢語句返回結果集。只能執行select語句。
  • int executeUpdate(String sql) 根據執行的DML(insert update delete)語句,返回受影響的行數
  • boolean execute(String sql)  此方法可以執行任意sql語句。返回boolean值,表示是否返回ResultSet結果集。僅當執行select語句,且有返回結果時返回true, 其它語句都返回false;

ResultSet接口:

結果集(客戶端存表數據的對象)

封裝結果集

提供一個遊標,默認遊標指向結果集第一行之前。

調用一次next(),遊標向下移動一行。

提供一些get方法。

封裝數據的方法

Object getObject(int columnIndex); 根據序號取值,索引從1開始

Object getObject(String ColomnName); 根據列名取值

 

JDBC連接MySQL並執行query的一個demo

從加載驅動、建立連接 到執行語句 到處理執行結果,最後到關閉連接 釋放資源 整個過程。

public class Demo04 {

	public static void main(String[] args) {
		Connection conn = null;
		Statement statement = null;
		ResultSet resultSet = null;
		try {
			//1、註冊驅動
			Class.forName("com.mysql.jdbc.Driver");//使用了這個類就加載了

			//2、創建連接
			conn = DriverManager.getConnection("jdbc:mysql://localhost/test1?user=root&password=123456");
		
			//3、得到執行sql語句的Statement對象
			statement = conn.createStatement();
			String sql = "select * from user;";
			
			//4、執行sql語句,並返回結果

			 resultSet = statement.executeQuery(sql);
			//5、處理結果
			while(resultSet.next()){
				System.out.println(resultSet.getObject(1));
				System.out.println(resultSet.getObject(2));
				System.out.println(resultSet.getObject(3));
				System.out.println(resultSet.getObject(4));
				System.out.println(resultSet.getObject(5));
				System.out.println("======================");
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally {
			//6關閉資源
			if(resultSet != null){
				try {
					resultSet.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
			if(statement != null){
				try {
					statement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			
			if(conn != null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

 

 

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