JDBC學習筆記(mysql)

* JDBC:Java DataBase ConnectiveJava連接數據庫
* 概念:
* 使用Java代碼操作數據庫
* JDBC其實就是一套操作數據庫的規範(接口)
* 快速入門:
1.導入驅動jar包
2.註冊驅動
3.創建連接對象 Connection
4.定義sql  String sql = "insert into stu values('zhangsan',23,'男');
5.獲取執行sql的對象  Statement
6.執行sql
7.處理結果

8.釋放資源。

// 1.導入jar 包
// 2.註冊驅動
Class.forName("com.mysql.jdbc.Driver");


// 3.獲取數據庫連接對象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shopping", "root", "123456");

(本機爲localhost或者本機ip地址都是可以的,端口號在安裝mysql數據庫的時候可以看到爲3306)

注意:如果是本機操作,ip和端口號是可以省略的

// 獲取執行sql語句的對象
String sql = "insert into tea values (null,'abcdef')";
Statement stat = conn.createStatement();


// 執行sql
int i = stat.executeUpdate(sql);


System.out.println(i);
//釋放資源
conn.close();
stat.close();

* 詳解各個類:
* DriverManager:驅動管理類
* 功能:
* 註冊驅動:
* Class.forName("com.mysql.jdbc.Driver");
  在Driver類中有靜態代碼塊,隨着類的加載而執行。
  static {
try {
java.sql.DriverManager.registerDriver(new Driver());//註冊驅動
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
  }


  * 拓展:mysql5之後的驅動jar包,註冊驅動這行代碼可以省略

因爲你不寫的話mysql5以上版本會自己找到這個路徑,然後加載這個路徑:


* 獲取Connection對象:
* Connection conn = DriverManager.getConnection(url,user,password);
* url:訪問數據庫的路徑
jdbc:     mysql://    192.168.3.100:     3306          /day04
     主協議      子協議 ip地址         端口號    數據庫名稱


* 細節:如果連接的是本地的數據庫,則ip和端口可以省略
jdbc:mysql:/

* Connection:數據庫連接對象
* 創建執行sql的對象
* createStatement:創建Statement對象
* prepareStatement:創建preparedStatement對象
* 可以防止sql注入,提高執行效率
* prepareCall: 創建preparedCall對象
* 執行存儲過程的。




* 管理事務:事務指一件事,這件事一般包含多個步驟,這些步驟要麼同時成功,要麼同時失敗。
* setAutoCommit():開啓事務
* commit():提交事務
* rollback():回滾事務


try{
開啓事務setAutoCommit(false):
1.查詢
2.-我卡里的錢
3.+張三卡里的錢
提交事務 commit()
}catch(Exception e){
回滾事務rollback()
}






* Statement:執行sql的對象
* 方法:
* executeUpdate(sql):執行DML語句  (增、刪、改)
* 返回值:int,代表影響的行數
* executeQuery(sql):執行DQL語句 (查詢)
* 返回值:ResultSet對象  結果集對象,對結果集的封裝


* execute(sql):執行任意語句
* 返回值:boolean,執行成功與否


* ResultSet:結果集對象
* 方法:
* next():判斷是否有下一條記錄,如果有,則將遊標向下移動一行
* getXxx(參數):獲取數據
* 參數類型:
String:列的名稱
int:列的序號  從1開始


* PreparedStatement:執行sql的對象
* 登陸:
如果使用statement,可能發生sql注入。


* 功能:
* 預防sql注入


* 使用方式:
1.定義sql時,所有的參數位置 需要 使用 ? 作爲佔位符
2.Connection對象獲取執行sql 對象 prepareStatement(sql)
3.給佔位符 ? 賦值
* setXxx(參數1,參數2):
* 參數1:?出現的位置 從1開始
* 參數2:?對應的值
4.執行sql時,使用不帶參數的方法




* 注意:一般都採用該對象來執行sql




   獲取自增長列的編號
// 連接
con = JdbcUtil.getConnection();
// 【一、需要指定返回自增長標記】
pstmt = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);




// 設置參數
pstmt.setString(1,'zs');
pstmt.setString(2,30);
// 執行1
pstmt.executeUpdate();


// 2  注意執行順序【二、獲取上面保存的部門子增長的主鍵】
rs =  pstmt.getGeneratedKeys();//拿到結果集合
// 3 得到返回的自增長字段的值
if (rs.next()) {
int deptId = rs.getInt(1);
}

發佈了38 篇原創文章 · 獲贊 1 · 訪問量 5455
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章