一篇弄懂JDBC(不騙你)

一、獲取數據庫連接

首先知道連接數據庫的四個要素,這是連接數據庫必須的


這四個要素可以這樣形象的理解,數據庫驅動相當於一輛車,URL地址相當於目的地,賬號密碼相當於車鑰匙,這樣才能去往數據庫

  1. 相應的數據庫驅動
  2. URL地址
  3. 賬號
  4. 密碼
//一、加載數據庫驅動
Class.forName("com.mysql.cj.jdbc.Driver");

//二、數據庫的URL地址
String url = "jdbc:mysql://127.0.0.1:3306/chat_db?characterEncoding=utf8&useSSL=false&serverTimezone=UTC";

//三、數據庫的賬號
String user = "root";

//四、數據庫的密碼
String password = "111";

//用驅動管理器獲取連接返回連接對象
Connection connection = DriverManager.getConnection(url,user,passworg);

至此數據庫就連接成功了,我們只要記住連接數據庫的四要素就好

二、增刪改操作

因爲增刪改沒有返回值,所以可以歸爲一類,下面給出操作步驟

  1. 獲取數據庫連接
  2. 預編譯SQL語句,並返回prepareStatement對象
  3. 填充預編譯SQL語句裏面的佔位符
  4. 執行
//步驟一:獲取數據庫連接
Connection connection = DriverManager.getConnection(url,user,passworg);

//要執行的SQL語句,關鍵部分用問號表示,比如說給Student表插入一條數據
String sql = "insert into student(id,name,sex) vaules(?,?,?)";
//步驟二:預編譯SQL語句,並返回對象
PreparedStatement ps = connection.prepareStatement(sql);

//步驟三:填充佔位符
ps.setObject(1,2);
ps.setObject(2,"張三");
ps,setObject(3."男");

//步驟四:執行
ps.execute();

以上就是一套最簡單的插入語句,我們可以將以上代碼提取出來,編寫一個通用的增刪改操作

我們需要將什麼參數傳入該方法呢?

SQL語句、SQL語句裏面的佔位符

但是佔位符的個數是不確定的,怎麼確定參數的個數呢?這裏就用到了可變參數的形參

public void update(String sql, Object...args){
   
    
    
    //獲取數據庫連接
    Connection connection = DriverManager.getConnection(url,user,passworg);
    
    //傳入形參SQL,預編譯SQL語句,返回對象
    PreparedStatement ps = connection.prepareStatement(sql);
    
    //填充佔位符,一次傳入形參
    for (int i = 0; i < args.length; i++) {
   
    
		ps.setObject(i + 1, args[i]);
	}
    
    //執行
    ps.execute();
    
}

三、查詢操作

查詢單列出來的原因是,會返回結果,我們要想辦法拿到數據

ResultSet 返回的實際上就是一張數據表。有一個指針指向數據表的第一條記錄的前面。

//獲取數據庫連接
Connection connection = DriverManager.getConnection(url,user,passworg);

//查詢學生表id等於幾的一條數據
String sql = "select * from student where id = ?";

//預編譯SQL語句,並返回prepareStatement對象
PreparedStatement ps = connection.prepareStatement(sql);

//執行查詢,返回結果(其實結果已經在這個結果集裏了,現在只考慮怎麼用這些數據就行了)
ResultSet set = ps.executeQuery();

//用while循環取數據,如果next()有下一條數據,就進入循環,一列一列的獲取值
while (set.next()){
   
    
	int id = set.getInt(stu_id);
    String name = set.getString(stu_name);
    String sex = set.getString(stu_sex);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章