JDBC(概述、Java需要的數據庫驅動包下載以及在IDEA中的導入、第一個JDBC程序、提取工具類、常用對象、statement對象詳述)

JBDC

概述:

  1. 什麼是 JDBC
    Java數據庫連接,(Java Database Connectivity,簡稱JDBC)是Java語言中用來規範客戶端程序如何來訪問數據庫的應用程序接口,提供了諸如查詢和更新數據庫中數據的方法,通常說的JDBC是面向關係型數據庫的,SUN 公司爲了簡化開發人員的(對數據庫的統一)操作,提供了一個Java操作數據庫的規範。
  2. Java需要的數據庫驅動包下載地址:多版本的下載地址 點擊這裏
  3. 在IDEA中導入需要的jar包:
    在這裏插入圖片描述

第一個JDBC程序

  1. 創建一個測試數據庫
CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci;
USE jdbcStudy;

CREATE TABLE users(    
  id INT PRIMARY KEY,    
  NAME VARCHAR(40),    
  PASSWORD VARCHAR(40),    
  email VARCHAR(60),    
  birthday DATE 
);

INSERT INTO users(id,NAME,PASSWORD,email,birthday) 
VALUES(1,'zhangsan','123456','[email protected]','1980-12-04'), 
(2,'lisi','123456','[email protected]','1981-12-04'), 
(3,'wangwu','123456','[email protected]','1979-12-04');
  1. 編寫Java測試代碼
import java.sql.*;

public class JdbcFirstDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {   
        //1. 加載驅動
        Class.forName("com.mysql.jdbc.Driver"); // 固定寫法,加載驅動
        //註冊驅動:DriverManager.registerDriver(new com.mysql.jdbc.Driver());等同上面的
        
        //2. 用戶信息和 url
        String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String username = "root";
        String password = "123456";
        
        //3. 連接成功,數據庫對象  Connection(url,用戶,密碼)
        Connection connection = DriverManager.getConnection(url, username, password);
        
        //4. 執行SQL的對象 
        Statement statement = connection.createStatement();
        
        //5. 用執行SQL的對象去執行SQL語句
        String sql = "SELECT * FROM users";
        //返回的結果集,結果集中封裝了我們全部的查詢出來的結果
        ResultSet resultSet = statement.executeQuery(sql); 
        while (resultSet.next()){
            System.out.println("id=" + resultSet.getObject("id"));
            System.out.println("name=" + resultSet.getObject("NAME"));
            System.out.println("pwd=" + resultSet.getObject("PASSWORD"));
            System.out.println("email=" + resultSet.getObject("email"));
            System.out.println("birth=" + resultSet.getObject("birthday"));
            System.out.println("==================================");
        }
        //6、釋放連接
        resultSet.close();
        statement.close();
        connection.close();
    }
}
  1. 運行結果:
    在這裏插入圖片描述
  • 總結:
    1、加載驅動;
    2、編寫用戶信息和 url;
    3、連接數據庫 DriverManager;
    4、獲得執行sql的對象 Statement;
    5、獲得返回的結果集;
    6、釋放資源。
  1. 提取工具類:
    由於編寫用戶信息和 url、釋放資源這兩步操作都是固定的,所以我們一般都會單獨放到一個配置文件裏,然後寫一個工具類,使用的時候直接調用即可:
    在 src 下建立資源文件 (db.properties):
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true
username=root
password=123456

工具類(jdbcUtils):

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class jdbcUtils {
    private static String driver = null;
    private static String url = null;
    private static String username = null;
    private static String password = null;

    static {
        try {
            InputStream in = jdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(in);

            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            //加載驅動
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //獲取連接
    public static Connection getConnecction() throws SQLException {
        return DriverManager.getConnection(url, username, password);
    }
    //釋放資源
    public static void release(Connection conn, Statement st, ResultSet rs){
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (st!=null){
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    }
}

當我們編寫完這兩個後,就可以使用它們進行增刪改查:
這裏演示一個插入數據操作,其他類似:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestInsert {
    public static void main(String[] args) {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
            try {
                conn = JdbcUtils.getConnection(); //獲取數據庫連接
                st = conn.createStatement();      //獲得SQL的執行對象
                //編寫sql語句
                String sql = "INSERT INTO users(id,`NAME`,`PASSWORD`,`email`,`birthday`)" +
                        "VALUES(4,'zhangsan','123456','[email protected]','2020-01-01')";
                int i = st.executeUpdate(sql);
                if (i>0){
                    System.out.println("插入成功!");
                }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

常用對象

  1. DriverManager
    管理一組 JDBC 驅動程序的基本服務
//註冊驅動
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//固定寫法,加載驅動 
Class.forName("com.mysql.jdbc.Driver");  
//連接
Connection connection = DriverManager.getConnection(url, username, password);
//事務滾回 
connection.rollback(); 
//事務提交
connection.commit(); 
//數據庫設置自動提交 
connection.setAutoCommit();
  1. URL
    mysql :" jdbc:mysql://主機地址:端口號(3306)/數據庫名?參數1&參數2&參數3 "
String url = "jdbc:mysql://localhost:3306/jdbcstudy? useUnicode=true&characterEncoding=utf8&useSSL=true";
  1. Statement
    執行SQL 的對象
statement.executeQuery(sql); //查詢操作返回 ResultSet 
statement.execute();         //執行任何SQL 
statement.executeUpdate();   //更新、插入、刪除。返回一個受影響的行數
  1. ResultSet
    查詢的結果集:封裝了所有的查詢結果
// 在不知道列類型的情況下使用
resultSet.getObject();  
// 知道列的類型就使用指定的類型 
resultSet.getString(); 
resultSet.getInt(); 
resultSet.getFloat(); 
resultSet.getDate(); 
resultSet.getObject(); 
...

遍歷、指針

resultSet.beforeFirst();  //移動到前面 
resultSet.afterLast();    //移動到後面 
resultSet.next();         //移動到下一個數據 
resultSet.previous();     //移動到前一行 
resultSet.absolute(row);  //移動到指定行
  1. 釋放資源
    耗費資源,用完關掉
resultSet.close(); 
statement.close(); 
connection.close();

statement對象詳述:

  1. 概述:JDBC中的statement對象用於向數據庫發送SQL語句,想完成對數據庫的增刪改查,通過這個對象向數據庫發送增刪改查語句即可。
  2. Statement.executeUpdate方法,用於向數據庫發送增、刪、改的sql語句,executeUpdate執行完後,將會返回一個整數(即增刪改語句導致了數據庫幾行數據發生了變化);
    Statement.executeQuery方法用於向數據庫發送查詢語句,executeQuery方法返回代表查詢結果的 ResultSet對象。
  3. CRUD操作(creat、read、update、delete)
  • creat:數據添加操作
Statement st = conn.createStatement(); 
String sql = "insert into user(….) values(…..) "; 
int num = st.executeUpdate(sql); 
	if(num>0){    
		System.out.println("插入成功!"); 
	}
  • read:數據查詢操作
Statement st = conn.createStatement(); 
String sql = "select * from user where id=1"; 
ResultSet rs = st.executeQuery(sql); 
	while(rs.next()){    
		//根據獲取列的數據類型,分別調用rs的相應方法映射到java對象中 
	}
  • update:數據修改操作
Statement st = conn.createStatement(); 
String sql = "update user set name='' where name=''"; 
int num = st.executeUpdate(sql); 
	if(num>0){    
		System.out.println(“修改成功!"); 
	}
  • delete:數據刪除操作
Statement st = conn.createStatement(); 
String sql = "delete from user where id=1"; 
int num = st.executeUpdate(sql);
	if(num>0){    
		System.out.println(“刪除成功!"); 
	}

// 下篇再見…謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章