JDBC 入門介紹以及 DAO 模式簡單介紹
阿新 • • 發佈:2018-11-06
JDBC(Java Database Connectivity) 使用步驟
- 下載 JDBC 相應資料庫的 jar 包加入專案下的 lib 資料夾中
此處使用 mysql,對應 mysql 的 jar 包下載地址:
mysql-connector-java-8.0.13.jar - 建立一個專門用作操作資料庫操作的類
DBUtils
,下面示例在DBUtils
中寫一個查詢本地的資料庫student
中一個叫student
的表中的所有記錄 - 基本步驟
a. 註冊資料庫驅動
b. 獲取連線Connection
物件
c. 建立Statement
物件
d.statement
ResultSet
e. 遍歷得到的ResultSet
得到結果 - 完整程式碼及註釋
import org.junit.Test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.sql.*; import java.util.Properties; public class DBUtils { @Test public void findAll() throws IOException, ClassNotFoundException {
DAO(Data Access Object) 模式簡單介紹
DAO 即一個用於資料庫操作的物件
實現步驟:
- 新建一個 dao 介面,宣告資料庫訪問規則(一系列與資料庫操作直接相關的,對資料庫進行更新、查詢、刪除、修改等操作的方法)
- 新建一個 dao 實現類,具體實現 dao 介面中定義的方法
- 新建一個 dao 實現類物件,直接使用其中的方法與資料庫互動
Statement 的安全問題,PreparedStatement
Statement
執行是先拼接 sql 語句後執行的,以前易存在“注入攻擊”的問題,因此現在用 PreparedStatement
,PreparedStatement
會在執行前做語法規則校驗。
PreparedStatement
使用介紹:
Statement
物件是在寫好 sql 語句的字串後執行;
而 PreparedStatement
不將 sql 語句的引數直接拼接成 sql 語句的字串,而是建立了 PreparedStatement
物件後通過 set…() 等方法傳入 (…處為引數對應資料型別)
程式碼例項:
String sql = "SELECT * FROM user WHERE username=? AND password=?";
// 如果用 Statement,上述對應的 sql 語句中的問號則會直接換成實際的值
PreparedStatement ps = connection.preparedStatement(sql);
// 沒錯,下標從 1 開始,1 表示在第 1 個 ? 的位置插入 username 的值
ps.setString(1, username);
ps.setString(2, password);
// 若是新增、更新、刪除操作則使用 executeUpdate() 方法
ps.executeQuery();