文章目錄
- JDBC
-
- 【1】操作步驟順序
-
- 1. 加載驅動(Driver)
- 2.擷取連接配接對象
- 3.建立語句
- 4.執行sql
- 5.釋放資源
- 【2】PreparedStatement 預編譯語句對象
-
- 1. 需要預先提供sql語句
- 2. 可以在sql中用?占位某個值
- 3. 給?指派
- 4. 執行sql
- 【3】SQL注入攻擊
-
- 防範方法
JDBC
英文全稱:Java databases connectivity
是Java 語言操作資料庫的API(應用程式接口)
存在于Java的==java.sql.*==包
其中用到的接口有:
Connection 連接配接:代表了Java和資料庫之間的通道,橋梁
Statement 語句:可以用來執行 inert ,update,delete,select…
ResultSet 結果集:代表的是查詢的結果
【1】操作步驟順序
1. 加載驅動(Driver)
jdbc的驅動就是一個連接配接工廠,生成的産品是連接配接對象。
com.mysql.jdbc.Driver 是Driver 的mysql實作類
oracle.jdbc.Driver 是Driver的oracle實作類
加載驅動的語句(jdbc3.0以上的版本都可以省略加載驅動這一步):Class.forName(“驅動類名”);
舉例如下:
2.擷取連接配接對象
擷取連接配接對象的語句:
DriverManager.getConnection(url,使用者名,密碼);//内部調用了 Driver 對象擷取資料庫連接配接
其中URL的格式如下:
URL:“jdbc:mysql://ip位址:端口号/資料庫名?參數”
舉例如下:
String URL="“jdbc:mysql://localhost:3306/school?”";
String USERNAME=“root”;
String PASSWORD=“root”;
也就是
3.建立語句
建立語句的語句:
4.執行sql
執行sql語句:
int rows = stmt.executeUpdate(sql1);//用來執行insert,update,delete,DDL 傳回值代表行數
ResultSet rs = stmt.executeQuery(sql2);//用來執行select
5.釋放資源
rs.close();
stmt.close();
conn.close();
這裡要注意的是釋放資源的順序,先打開的後釋放,後打開的先釋放。
【2】PreparedStatement 預編譯語句對象
Java語句:
Statement stmt = conn.createStatement();
stmt.executeUpdate(String sql);
1. 需要預先提供sql語句
2. 可以在sql中用?占位某個值
3. 給?指派
使用PreparedStatement中一系列以 set開頭的方法
setString(?的位置, 值)
setInt(?的位置, 值)
setDate(?的位置, 值)
psmt.setString(1, "李四");
psmt.setString(2, "1999-9-7");
4. 執行sql
注意: ?能夠占位的隻有值, 不能是表名、列名、關鍵字
【3】SQL注入攻擊
create table user (
username varchar(20) primary key,
password varchar(20)
);
insert into user(username, password) values('zhangsan','123');
防範方法
- 對參數記憶體做檢查,内部不能有sql關鍵字例如:or
- PreparedStatement