概述 :
- 載入 JDBC driver
- DriverManager 註冊
- 連線
- 建立 Statement 物件,便可以用 Statement.executeQuery() 去下 SQL 語句
- next() 讀取
step 0 : 讀取 .properties 文件,連線帳密寫在這裡
通常連線的帳密不會寫在程式碼,在 Java 中,Java 支持 .properties 文件的讀寫,java.util.Properties 類別為我們操作
因此在做電商網站時我把帳密連線寫在 config.properties ,然後記得這個檔案不要 git 管理,可以在 .gitignore 裡面加入
static Properties info = new Properties();
static {
//獲得屬性文件輸入流
InputStream in = DBhelp.class.getClassLoader().getResourceAsStream("config.properties");
try {
//從文件讀取到變數 info
info.load(in);
} catch (IOException e) {
e.printStackTrace();
}
}
step 1 : 載入 JDBC driver
Class.forName(com.mysql.jdbc.Driver);
PrintWriter out=response.getWriter();
try { //載入JDBC driver
Class.forName(com.mysql.jdbc.Driver);
}
catch(Exception e){
out.print("<h1>無法載入驅動程式</h1>");
return;
}
Class.forName()
使用 Class 的靜態 forName() 方法實現動態加載類別,就是動態載入 Class。
平常在寫 new 一個 class 時,Aaa aaa = new Aaa(); 一定要有 Aaa 這個 class,但如果是Class.forName("Aaa") 的時候, 就不需要先有 Aaa.class
JDBC 要使用 Class.forName("JDBC Driver") 的主要原因是 DriverManager 需要先註冊 Driver
DriverManager.registerDriver(Driver driver) ;
step 2 : 建立資料連結和 Statement 物件
建立資料連結後,要和資料庫進行互動是使用 JDBC Statement
和 PreparedStatement
讓我們可以傳送 SQL 命令並從資料庫進行接收資料的方法和屬性
這邊蠻像 PHP mysqli() 做的事情。
try
{
dbCon = DriverManager.getConnection(url,user,password);
stmt = dbCon.createStatement();
}
catch(SQLException e)
{
out.println("與資料來源連結錯誤");
return;
}
step 3 : 用.executeQuery() 使用 sql 語句,和 next() 讀取
PHP 那邊 query (SQL 語句)後用 fetch_assoc() 讀取資料
rs = stmt.executeQuery("SELECT * FROM users WHERE id=1");
rs.next();
out.print("<div>"+ rs.getString("username") +"</div>");
out.print("成功了");
executeQuery
執行 SELECT 語句,用於產生單個結果集(ResultSet)的語句executeUpdate
執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE。
如果 SQL 語句中有 ? 占位符,那麽在設置好占位符中的值後,必須使用 executeUpdate() 執行execute
可執行任何SQL語句,但比較麻煩,返回一個 boolean 值
上面內容參考文章 : execute、executeUpdate、executeQuery三者的區別(及返回值)
step 4 : 關掉
stmt.close();
dbCon.close();