目錄
- JDBC 腦圖
- 附:JDBC 應用案例、異常處理、批處理
JDBC
附
- JDBC 應用案例
// 應用
import java.sql.*;
public class JdbcTest {
// JDBC 驅動器名稱 和數據庫地址
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
//數據庫的名稱爲 EXAMPLE
static final String DB_URL = "jdbc:mysql://localhost/EXAMPLE";
// 數據庫用戶和密碼
static final String USER = "root";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//註冊 JDBC 驅動程序
Class.forName("com.mysql.jdbc.Driver");
//打開連接
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//執行查詢
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, name, age FROM Students";
ResultSet rs = stmt.executeQuery(sql);
//得到和處理結果集
while(rs.next()){
//檢索
int id = rs.getInt("id");
int age = rs.getInt("age");
String name = rs.getString("name");
//顯示
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", Name: " + name);
System.out.println();
}
//清理環境
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
// JDBC 操作錯誤
se.printStackTrace();
}catch(Exception e){
// Class.forName 錯誤
e.printStackTrace();
}finally{
//這裏一般用來關閉資源的
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
System.out.println("Goodbye!");
}
}
- 異常處理
// 常見
java.sql.SQLException;
方法 | 描述 |
---|---|
getErrorCode() | 獲取此 SQLException 對象的特定於供應商的異常代碼 |
getNextException() | 通過 setNextException(SQLException ex) 獲取鏈接到此 SQLException 對象的異常 |
getSQLState() | 獲取此 SQLException 對象的 SQLState。對於 JDBC 驅動程序的錯誤,沒有有用的信息從該方法返回。對於一個數據庫錯誤,則返回五位 XOPEN SQLSTATE 代碼。這種方法可以返回 null |
iterator() | 返回在鏈接的 SQLExceptions 上進行迭代的迭代器 |
setNextException(SQLException ex) | 將 SQLException 對象添加到鏈接的末尾 |
- 批處理
// 批處理
// 創建 statement 對象
Statement stmt = conn.createStatement();
// 關閉自動提交
conn.setAutoCommit(false);
// 創建 SQL 語句
String SQL = "INSERT INTO Students (id, name, age) VALUES(6,'Mike', 21)";
// 將 SQL 語句添加到批處理中
stmt.addBatch(SQL);
// 創建更多的 SQL 語句
String SQL = "INSERT INTO Students (id, name, age) VALUES(7, 'Angle', 23)";
// 將 SQL 語句添加到 批處理中
stmt.addBatch(SQL);
// 創建整數數組記錄更新情況
int[] count = stmt.executeBatch();
//提交更改
conn.commit();