1. 程式人生 > >JAVA基礎25-JDBC

JAVA基礎25-JDBC

一、JDBC的經典用法:

 

     .

二、JDBC圖解

 

三、JDBC使用步驟:

  1. 匯入相應資料庫的jar包。
  2. 載入驅動類 class.forName("類名")              // Class.forName("com.mysql.jdbc.Driver")
  3. 給出資料庫的URL                              //URL格式:       jdbc:子協議:資料來源              子協議
  4. 通過 java.sql.DriverManager的getConnection可獲得Connection物件,以建立連線
  5. 建立preparestatement物件
  6. 執行查詢(resultSet)或者更新
  7. 結束處理
  8. 關閉連線

    最基本的連線例子:

        1.匯入驅動包

         

         2.其他步驟如下

              

package com.demo.demo.demo1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Demo1 {
	// 3.給出URL
	private String dirver = "com.mysql.jdbc.Driver";
	private String url = "JDBC:mysql://localhost:3306/world";
	private String user = "root";
	private String passwd = "1234";

	public static void main(String[] args) throws SQLException {
		Connection con = null;
		PreparedStatement prep = null;
		ResultSet re = null;
		try {
			Demo1 d = new Demo1();
			// 2.載入驅動類
			Class.forName(d.dirver);
			// 4建立連線 返回值是:java.sql.connection
			con = DriverManager.getConnection(d.url, d.user, d.passwd);
			// 5.建立prepareStatement
			prep = con.prepareStatement("select * from city");
			// 6-1.查詢
			re = prep.executeQuery();
			System.out.println(re.first());
			System.out.println("id=" + re.getInt(1) + "-----------------------------");
			System.out.println("Name=" + re.getString(2));
			/**
             在Statement物件中可以執行如下的操作:
                A.查詢操作:executeQuery(SQL語句) 
             B.維護操作:executeUpdate(SQL語句)
                C.批處理操作:executeBath()

            */
		} catch (Exception e) {
			// ..............
		} finally {
			// 8.關閉連線
			// 後開先關;若無關閉,則只能等到執行緒死亡才關閉
			if (null != re) {
				re.close();
			}
			if (null != prep) {
				prep.close();
			}
			if (null != con) {
				con.close();
			}
			
			

		}

	}

}

四:對於JDBC資料庫詳解

4-1 執行查詢或更新

在Statement物件中可以執行如下的操作:
      A.查詢操作:executeQuery(SQL語句) 

      B.維護操作:executeUpdate(SQL語句)
      C.批處理操作:executeBath()

4-2 ResultSet【單一結果集】

ResultSet預設一開始是在beforeFirst ;我們可以通過next();向下移動;

next()返回boolean;若true,為存在。

確認了行後,確認列;列範圍為1-N;

通過使用getXXX系列方法,獲得相應的資料型別的資料。

          getXXX()有兩種引數:一種是通過索引,一種是通過列名。

ResultSet獲取大資料

-

4-3: ResultSetMetaDate【元資料】

         元資料:描述資料的資料

         獲取方式:

                     prepareStatement 的getMetaDate()方法

         常用方法

4-4:多結果集

  當有多個結果集的時候;

           1、使用prepareStatement的execute方法執行sql語句;返回true為有結果集,false為沒有;

           2、獲取結果集:prepareStatement的getResultSet方法

           3、  重複呼叫getMoreResult方法。  true有結果集,false無結果集

 

五、批處理

jdbc批量操作三種方式

相關方法 addBatch()  executeBatch()這兩個方法

         批量執行預定義模式的sql

        

         批量執行預定義、還有靜態的

                  

         執行靜態的sql

        

六、關於statement和prepareStatement

prepareStatement好處如下

  1. 防止SQL攻擊
  2. 提高可讀性,可維護性
  3. 提高效率

七、JDBC事務

     概念:將一組語句構成一個事務。當所有語句順利執行後,事務可以被提交

     作用:事務確保資料庫的完整性

     步驟:

         A:預設情況下,資料庫都是自動提交模式(一句話提交一次);通過connection的setAutoCommit(false)關閉自動提交。  

         B:通過prepareStatement多次呼叫執行後,

         C:如果執行命令沒有錯誤,則呼叫comit方法

         D: 如果錯誤,呼叫rollback()方法回滾

    模板:

try{

con.setAutoCommit(false);
con.commit;
}
catch{
   con.rollback()
}
finally{

  //關閉連線
}

 

八。資料庫型別和JAVA型別對應

 資料庫型別  Java型別
 INTEGER  int or java.lang.Integer
 BIGINT  long or java.lang.Long
 SMALLINT  short or java.lang.Short
 FLOAT  float or java.lang.Float
 DOUBLE  double or java.lang.Double
 NUMERIC  java.math.BigDecimal
 CHAR  java.lang.String
 VARCHAR  java.lang.String
 TINYINT  byte or java.lang.Byte
 BIT  boolean or java.lang.Boolean
 DATE  java.util.Date or java.sql.Date
 TIME  java.util.Date or java.sql.Time
 TIMESTAMP  java.util.Date or java.sql.Timestamp
 TIMESTAMP  java.util.Calendar
 DATE  java.util.Calendar
 VARBINARY (or BLOB)  byte[]
 CLOB  java.lang.String
 VARBINARY (or BLOB)  any Java class that implements java.io.Serializable
 CLOB  java.sql.Clob
 BLOB  java.sql.Blob

注意:

        domain物件中,是不能出現java.sql下的東西【低耦合】

       java.util.Date轉java.sql.Date

package com.demo.demo.demo1;


public class City {

	public static void main(String[] args) {
		java.util.Date d=new java.util.Date();
		Long l=d.getTime();
		java.sql.Date dd=new java.sql.Date(l);
		
	}
}