1.PreparedStatement 預處理語句對象
? ? 是Statement的子接口
? * 避免SQL注入
? * 提高多次執(zhí)行同一條SQL語句的效率
? * SQL語句的可讀性更好 ??
? ? 只要SQL中需要拼接java變量贾惦,就使用PreparedStatement术裸。
? ?PreparedStatement接口的使用:
? * SQL語句中有java變量,該JAVA變量使用戚哎?作為占位符
? * 實例化
? ? Statement stmt = conn.createStatement();
? ? stmt.executeUpdate(sql);
? ? *實例化期間傳SQL
? ? PreparedStatement pstmt
? ? = conn.prepareStatement(sql);
? * 裝配占位符挡逼?的值
? ? pstmt.setString(1,字段名1);
? ? pstmt.setString(2,字段名2;
? * 執(zhí)行SQL語句? ? ? ?
? ? 執(zhí)行查詢
? ? pstmt.executeQuery();
? ? 執(zhí)行增刪改語句
? ? pstmt.executeUpdate();
2.將數據庫的連接信息保存到屬性文件中
? * 在src目錄中,創(chuàng)建db.properties屬性文件
? ? 屬性文件中保存數據以key=value的形式
? ? 屬性文件中不能直接保存中文
? ? 屬性文件中key,value直接寫咙轩,沒有任何符號
? * 解析屬性文件
? ? Properties 繼承Hashtable
? ? load(InputStream in);加載屬性文件
? ? String getProperty(String key);根據key獲取value
3.連接池
? ?* 提高效率
? ?不需要對應所有的請求券躁,臨時創(chuàng)建新的連接
? ?* 可以管理連接數
? ?* 成熟的連接池組件
? ? DBCP DataBase Connection Pool?c3p0
4.JDBC中的事務處理
? ? 事務:一組操作的邏輯單元
? ? 一組添加 一組刪除 一組更新
? ? 事務具備四個特性(ACID)
? ?1) 原子性(Atomicity)
????????????一個事務是一個不可分割的邏輯單元,一個事務中艰毒,所有的操作要么都成功,要么都失敗占婉。
? ?2) 一致性(Consistency)
????????????事務執(zhí)行的前后泡嘴,保證數據的完整性。
? ? 完整性:完備性和正確性
? ? ? ? ? ? 外鍵字段的值必須是引用其他主鍵字段的值
? ? ? ? ? ? 刪除主表的數據逆济,從表必須被修改或被刪除
? ?3) 隔離性(Isolation)
????????????多個事務并發(fā)執(zhí)行酌予,事務之間互不干擾,數據庫軟件都有默認的事務隔離級別磺箕。
? ? 串行化
? ? 可重復讀?
? ? 讀已提交
? ? 讀未提交
? ? 4) 持久性(Durability)
????????????事務一旦提交,對數據庫數據的影響是永久的抛虫。
? 數據庫端事務的操作:
? 事務開啟:執(zhí)行第一條增刪改SQL語句松靡,事務會自動開啟
? 事務結束:
? commit 提交事務
? rollback 撤銷事務
? JDBC默認自動提交事務
? JDBC中事務操作API:
? boolean getAutoCommit();
? 獲取連接對象的默認事務提交方式
? void setAutoCommit(boolean bo);
? 設置連接對象的事務提交方式
? void commit();提交事務
? void rollback();回滾事務
?* ?結論:當出現(xiàn)一組操作(多條insert,update,delete)的需求,必須關注事務