JDBC(Java數據庫連接)


JDBC(Java數據庫連接)

1. 什么是JDBC?

JDBC全稱:Java Database Connectivity,簡稱JDBC

2. JDBC常用的開發接口(☆)

接口 描述
Connection 用來與數據庫建立連接
Statement 用來發送SQL語句
ResultSet 執行SQL語句返回的結果集
PreparedStatement 用來發送SQL語句的,是Statement的子接口(預編譯、防止SQL注入)

3. 創建JDBC的步驟(☆)

  1. 導入數據庫驅動包,加載驅動
OracleDriver od = new OracleDriver();
DriverManager.registerDriver(od);
// 參數:驅動類的完整路徑
Class.forName("oracle.jdbc.driver.OracleDriver");
  1. 建立連接
Connection conn = DriverManager.getConnection(連接URL, 用戶名, 密碼);
("jdbc:oracle:thin:@127.0.0.1:1521:orcl,用戶名, 密碼")
  1. 創建可執行SQL語句的statement對象,發送SQL語句
Statement sm = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(sql)
  1. 獲取結果集,遍歷數據
ResultSet rs = sm.executeQuery("select * from t_depart");
// 執行的SQL語句為查詢語句,返回的結果是ResultSet類型
statement.executeQuery(sql);
// 執行的SQL語句為刪除、修改、添加,返回的結果是int類型,代表數據庫中有多少條記錄被改變
statement.executeUpdate(sql);
// 執行的SQL語句為查詢、刪除、修改、添加,返回的結果是boolean類型,若為true,代表執行的為查詢語句,否則為其他語句
statement.execute(sql);
  1. 關閉,先開的后關,后開的先關
rs.close();
sm.close();
conn.close();

4. 時間處理

Java中有三個時間,java.util.Date時間基類,有三個子類:

時間 描述
java.sql.Date 數據庫時間,精確到年月日
java.sql.Timestamp 數據庫時間,精確到年月日時分秒
java.sql.Time 數據庫時間,精確時分秒

5. JDBC編程思想(類與數據庫對應關系)(☆)

  • 一個類對應一張表
  • 一個屬性對應一個字段
  • 一個對象對應一條記錄

6. Statement與PreparedStatement區別(☆)

PrepareStatement是Statement的子接口

  • PerparedStatement自帶預編譯功能,相同的SQL語句只會編譯一次,提高執行效率
    Statement每次執行SQL語句都會重新編譯,執行效率不高

  • PerparedStatement防止SQL注入,安全性比較高
    Statement不能防止SQL注入,安全性較低

7. 數據類型與Java類型的匹配

數據庫類型 Java類型
char String
varchar
varchar2
clob
number int
long
number(7,2) double
date java.sql.Date
timestamp java.sql.Timestamp

8. JDBC如何手動提交事務

JDBC默認自動提交事務

  1. 把Connection對象設置成手動提交事務,代碼如下:
    conn.setAutoCommit(false);

  2. 當Statement對象執行SQL語句之后,提交事務,代碼如下:

int row = ps.executeUpdate();
conn.commit();
select t.*, rowid from t_newsuser t;
// 格式化表
truncate table t_newsuser;

9. 如何釋放一張表的空間,提高查詢效率

select * from t_newstype;
select * from t_newstype1;
  1. 創建一張備份表
    create table t_newstype1 as select * from t_newstype;
  2. 清空原表
    truncate table t_newstype;
  3. 還原數據
insert into t_newstype select * from t_newstype1;
commit;
  1. 刪除備份表
    drop table t_newtype1;

10. executeUpdate與executeQuery的區別

  • executeUpdate:執行的語句是DDL、DML,DDL幾乎不用,返回值為:影響行數(int)

    • drop:刪除表結構,並且刪除數據,釋放表空間
    • truncate:保留表結構,清除數據,釋放表空間
    • delete:保留表結構,刪除指定數據,提交事務,不一定釋放空間
  • executeQuery:執行的語句是DQL,select查詢語句,返回值為:結果集(ResultSet)

10. JDBC常見異常

常見異常 可能引起原因
標識符無效 字段名單詞寫錯
索引中丟失IN或OUT 字段名與?個數不匹配
無效的列索引 參數多余?
ORA-00911:無效字符 多個無效的字符,例如:分號
列在此處不允許 數據類型不匹配


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM