程序員與數據庫打交道的JDBC知識概要

1.JDBC全稱:Java database connectivity,Java數據庫鏈接。程序員

(1)           JDBC是一種用於執行SQL語句的Java API,爲多種關係數據庫提供多種統一訪問,由一組Java語言編寫的類和接口組成。sql

(2)           程序員JDBC API程序能夠訪問全部的數據庫。數據庫

(3)           Java語言和JDBC結合,程序員沒必要爲不一樣的平臺寫不一樣的應用程序,只需寫一遍程序就可使它在任意平臺上運行。安全

(4)           JDBC簡單講作三件事:與數據庫創建鏈接,發送、處理數據庫語句並處理結果。oracle

3.加載Oracle的JDBC驅動程序接口

Class.forName(「Oracle.jdbc.driver.OracleDriver」)資源

4.execute、executeQuery、executeUpdate字符串

 executeQuery:返回結果集(ResultSet),一般用於select語句。get

executeUpdate:返回此操做影響的行數(int),一般用於insert,update,delete語句。it

execute返回Boolean值, 一般用於insert,update,delete語句。

5.ResultSet處理的典型代碼:

while(rs.next()){

   String ename = rs.getString(1);

   int empno = rs.getInt(「empno」);

}

6.JDBC記載4大步驟

(1)加載一個Driver驅動;

(2)建立數據庫鏈接(Connection)

(3)建立SQL命令發佈器Statement,經過statement發送命令並獲得結果。

(4)處理結果(select語句和resultset),處理完畢後關閉數據庫資源。

7.SQL注入攻擊

好比JDBC完成用戶的登陸功能

(1)           SQL語句採用了字符串拼接技術String sql = 「select * from t_user where userno= ‘」+userno+」’ and password =+upwd+」’」;

(2)           繼而使用SQL命令發佈器發送SQL命令並獲得結果:

Stmt.executeQuery(sql);

(3)           如輸入:userno = 「 abc:,password =」 abc ‘or’ 1’ = 1」;

因而上述SQL字符串就變爲sql = 「select * from t_user where userno =’ abc’ and password =’ abc’ ‘or’ 1’ = ‘ 1」;

此語句的用戶名和密碼並不正確,可是仍然能訪問數據表,因此存在風險,這就是所謂的SQL注入攻擊。

(4)           解決方案:採用statement的子接口PreparedStatement來實現。

*1.可讀性強不繁瑣

*2.安全

*3屢次執行同一條SQL語句,效率高

例:

  Connection conn = null;

  Statement stmt = null;

  ResultSet rs = null;

try{

   Class.forName(「oracle.jdbc.driver.OracleDriver」);

   conn = DriverManager.getConnection(「jdbc:oracle:thin:@localhost:1521:orcl」,」scott」,」tiger」);

   stmt = conn.createStatement();

 String sql = 「select * from emp」;

rs = stmt.executeQuery(sql);

相關文章
相關標籤/搜索