「JAVA」JDBC快速入門+詳解各個對象

使用JDBC的基本步驟

  1. 導入驅動jar包:
        mysql-connector-java-5.1.34.jar 到項目libs目錄下
       (1)複製 mysql-connector-java-5.1.34.jar 到項目libs目錄下
       (2)右鍵點libs–>Add as Library(這個才真正的把這個jar包導到這個項目裏來)
  2. 註冊驅動
  3. 獲取數據庫連接對象 Connection
  4. 定義sql
  5. 獲取執行sql語句的對象Statement
  6. 執行sql,接受返回結束
  7. 處理結果
  8. 釋放資源

代碼實現

public class JdbcDemo1 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {

        //1.導入驅動jar包
        //2.註冊驅動
        Class.forName("com.mysql.jdbc.Driver");
        //3.獲取數據庫的連接對象
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "123456");
        //4.定義sql語句
        String sql = "update account set balance = 200 where id = 1";
        //5.獲取執行sql的對象Statement
        Statement stmt = conn.createStatement();
        //6.執行sql
        int count = stmt.executeUpdate(sql);
        //7.處理結果
        System.out.println(count);
        //8.釋放資源
        stmt.close();
        conn.close();
    }
}

詳解各個對象

DriverManager-驅動管理對象

功能:
1. 註冊驅動:告訴程序該使用哪一個數據庫驅動jar包。
   static void registerDriver(Driver driver):註冊與給定的驅動程序 DriverManager。
   寫代碼使用:Class.forName(“com.mysql.jdbc.Driver”);
   通過查看源碼發現:在com.mysql.jdbc.Driver類中存在靜態代碼塊

static{
                    try{
                        java.sql.DriverManger.registerDriver(new Driver());
                    }catch(SQLException E){
                        throw new RuntimeException("Can't register driver!");
                    }
               }

注意:mysql5之後的驅動jar包可以省略註冊驅動的步驟。
在這裏插入圖片描述
2. 獲取數據庫連接

  • 方法:static Connection getConnection(String url,Sring user,String pasword)
  • 參數:
       *url:指定連接的路徑
       *語法:jdbc:mysql://ip地址(域名):端口號/數據庫名稱
        *例子:mysql://localhost:3306/db3
       *細節:如果連接的是本機mysql服務器,並且mysql服務器 默認端口是3306則url可以簡寫爲:jdbc:mysql:///數據庫名稱mysql:///db3
              *user:用戶名
              *password:密碼

Connection-數據庫連接對象

1. 功能:

  • 獲取執行sql的對象
    *Statement createStatement()
    *PrepareStatement prepareStatement(String sql)
  • 管理事務:
    *開啓事務:setAutoCommit(boolean autoCommit) 調用該方法設置參數爲false,即開啓事務
    *提交事務:commit()
    *回滾事務:rollack()

Statement-執行sql的對象

  • boolean execute(String sql):可以執行任意的sql 瞭解
  • int executeUpdate(String sql):執行DML(insert,update,delete)語句,DDL(create,alter,drop)語句
           返回值:影響的行數,可以通過這個來判斷DML語句是否執行成功如果返回值>0,則執行成功 反之執行失敗
    在這裏插入圖片描述
  • ResultSet executeQuery(String sql):執行DQL (select) 語句

ResultSet-結果集對象

作用:用來封裝查詢的結果

  1. boolean next():遊標向下移動一行,判斷當前行是否是最後一行末尾(是否有數據),如果是,則返回false,如果不是,則返回true。
  2. getxxx(參數):獲取數據
        *xxx:代表數據類型 如:int getInt() , String getString()
       *參數:
          1.int:代表列的編號,從1開始 如:getString(1)
          2.String:代表列的名稱 如getDouble(“balance”)
    在這裏插入圖片描述
  3. 注意:
       使用步驟
          1.遊標向下移動一行
          2.判斷是否有數據
          3.獲取數據
while(rs.next()){
    //6.2獲取數據
          int id = rs.getInt(1);
    String name = rs.getString(2);
    Double balance = rs.getDouble(3);
    System.out.println(id + "..." + name + "..." + balance);
}

PreparedStatement-執行sql的對象

  1. SQL注入問題:在拼接sql時,有一些sql的特殊關鍵字參與字符串的拼接。會造成安全性問題
       a).輸入用戶名 隨便輸入,輸入密碼:a’ or ‘a’ = 'a
       b).sql:select * from user where username = ‘h’ and password = ‘a’ or ‘a’ = ‘a’
  2. 解決sql注入問題:使用PreparedStatement對象來解決
  3. 預編譯的sql:參數使用 ? 作佔位符
  4. 步驟:
       1).導入驅動jar包:mysql-connector-java-5.1.34.jar 到項目libs目錄下
       2).註冊驅動
       3).獲取數據庫連接對象 Connection
       4).定義sql
          *注意:sql的參數使用?作爲佔位符。
          如:select * from user where username = ? and password = ?;
       5).獲取執行sql語句的對象
       PreparedStatement Connection.PrepareStatement(String sql)
       6).給 ? 賦值:
          *方法:setXXX(參數1,參數2)
             *參數1:?的位置編號 從1開始
             *參數2:?的值
       7).執行sql,接受返回結束
       8).處理結果
       9).釋放資源
  5. 後期都會使用PreparedStatement來完成增刪改查的所有操作
       1.可以防止sql注入
       2.效率更高
    在這裏插入圖片描述
    希望大家都能成爲優秀的學習冠軍!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章