JDBC:
1、java制定標準,不同的數據庫廠商實現接口即可。
2、oracle廠商實現接口
F:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar
視安裝路徑而定
3、jdbc步驟
package com.shy.jdbc;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCDemo2 {
public static void main(String[] args) {
Properties pro = new Properties();
try {
pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
} catch (IOException e) {
e.printStackTrace();
}
try {
Class.forName(pro.getProperty("driver"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection conn = null;
Statement state = null;
ResultSet result = null;
try {
conn = DriverManager.getConnection(pro.getProperty("url"), pro.getProperty("name"), pro.getProperty("pwd"));
state = conn.createStatement();
String sql = "select empno,ename from emp";
result = state.executeQuery(sql);
while (result.next()) {
System.out.println(result.getObject(1) + "--->" + result.getObject("ename"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (result != null) {
try {
result.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
處理塊:
1、靜態處理塊 Statement
Statement 是 Java 執行數據庫操作的一個重要接口,用於在已經建立數據庫連接的基礎上,向數據庫發送要執行的 SQL 語句。Statement 對象,用於執不帶參數的簡單 SQL 語句。
執行靜態 SQL 語句並返回它所生成結果的對象。
ddl -->execute(dd語句) -- 通常不會在代碼中執行
dml -->executeUpdate(dml語句)
select -->executeQuery(select)
特點:處理不變的靜態的 sql 語句
優點: 直接查看sql ,方便處理錯誤
缺點:性能不高 拼接 sql 麻煩 可能存在 sql 注入
2、預處理塊 PreparedStatement
PreparedStatement 接口繼承了 Statement,並與之在兩方面有所不同:有人主張,在 JDBC 應用中,如果你已經是稍有水平開發者,你就應該始終以PreparedStatement 代替 Statement.也就是說,在任何時候都不要使用 Statement。由於 PreparedStatement 對象已預編譯過,所以其執行速度要快於 Statement對象。因此,多次執行的 SQL 語句經常創建爲 PreparedStatement 對象,以提高效率。
執行:
存在? ,先填充參數再執行
ddl -->execute()
dml -->executeUpdate()
select -->executeQuery()
特點 :處理 不變的靜態的 sql 語句 |可變的 sql 語句 帶 ? 的 sql
優點:性能高,方便編寫sql 不存在sql注入 安全
缺點:不能直接打印sql語句 不方便處理錯誤