JAVA基礎25-JDBC
一、JDBC的經典用法:
.
二、JDBC圖解
三、JDBC使用步驟:
- 匯入相應資料庫的jar包。
- 載入驅動類 class.forName("類名") // Class.forName("com.mysql.jdbc.Driver")
- 給出資料庫的URL //URL格式: jdbc:子協議:資料來源 子協議
- 通過 java.sql.DriverManager的getConnection可獲得Connection物件,以建立連線
- 建立preparestatement物件
- 執行查詢(resultSet)或者更新
- 結束處理
- 關閉連線
最基本的連線例子:
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好處如下
- 防止SQL攻擊
- 提高可讀性,可維護性
- 提高效率
七、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);
}
}