JDBC定義: JDBC(Java DataBase Connectivity,java數據庫鏈接)是一種用於執行SQL語句的Java API。JDBC是Java訪問數據庫的標準規範,能夠爲不一樣的關係型數據庫提供統一訪問,它由一組用Java語言編寫的接口和類組成。java
JDBC規範(掌握四個核心對象):mysql
DriverManager類:用於註冊驅動(管理控制驅動程序)sql
Connection: 表示與數據庫建立的鏈接數據庫
Statement: 操做數據庫sql語句的對象oracle
ResultSet: 結果集或一張虛擬表(查詢結果返回ResultSet集)性能
JDBC案例實現url
@Testspa
// 查詢全部的分類信息對象
public void demo1() throws Exception{接口
// 注意:使用JDBC規範,採用都是 java.sql包下的內容
//1 註冊驅動
Class.forName("com.mysql.jdbc.Driver");
//2 得到鏈接
String url = "jdbc:mysql://localhost:3306/mydb";
Connection conn = DriverManager.getConnection(url, "root", "root");
//3得到執行sql語句的對象
Statement stmt = conn.createStatement();
//4執行SQL語句
ResultSet rs = stmt.executeQuery("select * from category");
//5處理結果集
while(rs.next()){
// 得到一行數據
Integer cid = rs.getInt("cid");
String cname = rs.getString("cname");
System.out.println(cid + " , " + cname);
}
//6釋放資源
rs.close();
stmt.close();
conn.close();
}
DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建議使用
緣由有2個:
>致使驅動被註冊2次。
>強烈依賴數據庫的驅動jar
解決辦法:
Class.forName("com.mysql.jdbc.Driver");
static Connection getConnection(String url, String user, String password)
試圖創建到給定數據庫 URL 的鏈接。
參數說明:url 須要鏈接數據庫的位置(網址) user用戶名 password 密碼
例如:getConnection("jdbc:mysql://localhost:3306/day06", "root", "root");
URL:SUN公司與數據庫廠商之間的一種協議。
jdbc:mysql://localhost:3306/day06
協議子協議 IP :端口號數據庫
mysql: jdbc:mysql://localhost:3306/day04或者jdbc:mysql:///day14(默認本機鏈接)
oracle數據庫: jdbc:oracle:thin:@localhost:1521:sid
preparedStatement:預編譯對象,是Statement對象的子類。
特色:
性能高
會把sql語句先編譯
能過濾掉用戶輸入的關鍵字。
PreparedStatement預處理對象,處理的每條sql語句中全部的實際參數,都必須使用佔位符?替換。
String sql = "select * from user where username = ? and password = ?";
PreparedStatement使用,須要經過如下3步驟完成:
1. PreparedStatement預處理對象代碼:
#得到預處理對象,須要提供已經使用佔位符處理後的SQL語句
PreparedStatement psmt = conn.prepareStatement(sql)
1. 設置實際參數
void setXxx(int index, Xxx xx) 將指定參數設置指定類型的值
參數1:index 實際參數序列號,從1開始。
參數2:xxx 實際參數值,xxx表示具體的類型。
例如:
setString(2, "1234") 把SQL語句中第2個位置的佔位符?替換成實際參數 "1234"
2. 執行SQL語句:
int executeUpdate(); --執行insert update delete語句.
ResultSet executeQuery(); --執行select語句.
boolean execute(); --執行select返回true 執行其餘的語句返回false.