JDBC概念和快速入門案例
1、JDBC的概念:
通過Java代碼操作數據庫(增,刪,改,查)
2、快速入門操作步驟:
A.導入jar包
B.註冊驅動
Class.forName("com.mysql.jdbc.Driver");
C.獲取驅動
String url = "jdbc:mysql://127.0.0.1:3306/ee"; //ee是數據庫的名稱
Connection conn = DriverManager.getConnection(url, "root", "123");
D.獲取操作對象
Statement stat = conn.createStatement();
E.操作SQL
int num = stat.executeUpdate(sql);
F.釋放資源
stat.close();
conn.close();
JDBC各個類的詳細介紹
1、DriverManager 驅動管理者
註冊驅動
註冊驅動的代碼 Class.forName("com.mysql.jdbc.Driver");
Connection 連接數據庫
A.獲取執行數據庫的對
Statement stat = conn.createStatement();
獲取預置語句執行數據庫對象
PrepareStatement ps = conn.prepareStatement(sql語句);
B.管理事務
a.開啓事務
conn.setAutoCommit(false); //false設置爲手動提交事務.true設置爲自動提交
b.提交事務
conn.commit();
c.回滾事務
conn.rollback();
Statement 操作數據庫
A.更新操作(DML"對錶記錄的增刪改"和DDL"對錶和庫的增刪改")
int num = stat.executeUpdate("SQL語句"); //這裏的SQL語句是增刪改.返回的是影響幾行
B.查詢操作(DQL"對錶記錄的查詢操作")
ResultSet resu = stat.executeQuery("SQL查詢語句"); //這裏的SQL語句是查詢語句 DQL
4、ResultSet 查詢表結果集
A.判斷是否還存在下一條數據
boolean b = resu.next(); //如果存在下一條數據,返回值爲true 不存在則返回false
B.獲取結果集當中的數據
a.通過查詢到的結果集,索引值獲取(索引值從1開始)
int data01 = resu.getInt(1); //獲取到的是查詢結果集索引爲1的int類型的數據
String data02 = resu.getString(2); //獲取到的是查詢結果集索引爲2的String類型的數據
b.通過查詢到的結果集,列名稱獲取
int data01 = resu.getInt("id"); //獲取到的是查詢結果集列名是id的int類型的數據
String data02 = resu.getString("name"); //獲取到的是查詢結果集列名是name的String類型的數據
5、PrepareStatement 操作數據庫
A.獲取預置操作
String sql = "select * from user where username = ? and password = ?";
PreparedStatement ps = Connection.prepareStatement(sql); //通過預置對象,獲取連接的操作
B.設置參數
ps.setString(1,"root"); //參數1:第幾個問號,參數2:對應預置的值
ps.setString(2,"123");//參數1:第幾個問號,參數2:對應預置的值
C.執行SQL語句
ps.executeQuery();
JDBC工具類的寫法
//[1]靜態代碼塊,用於加載靜態成員變量(4個文件當中的數據)
//[2]靜態的工具方法 Connection getConnection()
//[3]釋放資源的方法【重載的方法】 傳入2個參數,傳入3個參數
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* 文件的讀取,只需要讀取一次即可拿到這些值。使用靜態代碼塊
*/
static{
//讀取資源文件,獲取值。
try {
//1. 創建Properties集合類。
Properties pro = new Properties();
//獲取src路徑下的文件的方式--->ClassLoader 類加載器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();
//2. 加載文件
pro.load(new FileReader(path));
//3. 獲取數據,賦值
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//4. 註冊驅動
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 獲取連接
* @return 連接對象
*/
public static Connection getConnection() throws SQLException {
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
/**
* 釋放資源
* @param stmt
* @param conn
*/
public static void close(Statement stmt, Connection conn){
if( stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 釋放資源
* @param stmt
* @param conn
*/
public static void close(ResultSet rs, Statement stmt, Connection conn){
if( rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}