91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDBC如何獲取連接

發布時間:2022-09-28 14:07:28 來源:億速云 閱讀:101 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“JDBC如何獲取連接”,內容詳細,步驟清晰,細節處理妥當,希望這篇“JDBC如何獲取連接”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

1. JDBC基本介紹

  • JDBC為訪問不同的數據庫提供了統一的接口,為使用者屏蔽了細節問題

  • Java程序員使用JDBC,可以連接任何提供了JDBC驅動程序的數據庫系統,完成對數據庫的各種操作。

  • JDBC基本原理圖

JDBC如何獲取連接

2. JDBC快速入門

2.1 JDBC程序編寫步驟

  • 注冊驅動-加載Driver類

  • 獲取連接-得到Connection

  • 執行增刪改查-發送SQL給MySQL執行

  • 釋放資源-關閉相關連接

2.2 案例演示

2.2.1 前置工作,在數據庫中建立對應表
CREATE TABLE `actor`(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(32) NOT NULL DEFAULT '',
sex CHAR(1) NOT NULL DEFAULT '女',
borndate DATETIME,
phone VARCHAR(12));
2.2.2 前置工作,導入MySQL數據庫的對應jar包

在項目下新建一個文件夾如libs,將對應jar包拷入,并將其加入library中

JDBC如何獲取連接

JDBC如何獲取連接

public static void main(String[] args) throws SQLException {
        //注冊驅動
        Driver driver = new Driver();
        String url="jdbc:mysql://localhost:3306/zxy_db01";
        String user="root";
        String psd = "123";
        DriverManager.registerDriver(driver);
        //獲得連接
        Connection connection = DriverManager.getConnection(url,user,psd);
        //執行SQL語句
        String sql = "insert into actor values(null, '劉德華', '男', '1970-11-11', '110')";
        //statement 用于執行靜態 SQL 語句并返回其生成的結果的對象
        Statement statement = (Statement) connection.createStatement();
        int rows = statement.executeUpdate(sql);
        System.out.println(rows > 0 ? "成功" : "失敗");
        //關閉資源
        statement.close();
        connection.close();
    }

然后我們再去查詢數據庫,就會發現已經成功啦

JDBC如何獲取連接

3. 相關類的介紹

3.1 Statement

相信對于上面的代碼中你最好奇的就是Statement這個類,我們就來聊一聊這個。

基本介紹:

  1. 用于執行靜態Sql語句并返回其生成結果

  2. 在連接建立后,需要對數據庫進行訪問,執行命名或是SQL語句,可以通過Statement(存在SQL注入問題)PrepardStatement(預處理) CallableStatement(存儲過程)

  3. Statement對象執行SQL語句,存在SQL注入風險

  4. SQL注入是利用某些系統沒有對用戶輸入對數據進行充分對檢查,而在用戶輸入數據中注入非法對SQL語句段或命令,惡意攻擊數據庫

  5. 要防范SQL注入,只要用PreparedStatement(從Statement擴展而來),取代Statement就可以了

其實歸根究底,這個類就是一個用來調用執行SQL語句的類。

3.2 ResultSet[結果集]

這個是執行查詢的SQL時返回的對象,如下面這段代碼

String sql = "select id, name , sex, borndate from actor";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) { // 讓光標向后移動,如果沒有更多行,則返回 false
    int id = resultSet.getInt(1); //獲取該行的第 1 列 
    String name = resultSet.getString(2);//獲取該行的第 2 列 
    String sex = resultSet.getString(3); 
    Date date = resultSet.getDate(4); 
    System.out.println(id + "\t" + name + "\t" + sex + "\t" + date);
}

表示數據庫結果集的數據表,通常通過執行查詢數據庫的語句生成。

ResultSet對象保持一個光標指向其當前的數據行。 最初,光標位于第一行之前。 next方法將光標移動到下一行,并且由于在ResultSet對象中沒有更多行時返回false ,因此可在while循環中使用循環來遍歷結果集。

3.3 PreparedStatement

這個類其實和上面介紹的Statement效果類似,相當于Statement的改進版,增加了預處理過程避免了sql注入現象(簡單來講就是破獲你的數據庫中的信息),下面我們就來聊聊它

  1. PreparedStatement執行的SQL語句中的參數用問號(?)來表示,調用PreparedStatement對象額setXxx()方法來設置這些參數,setXxx()方法有兩個參數,第一個參數是要設置的SQL語句中的參數的索引(從1開始),第二個是設置的SQL語句中的參數的值。

  2. 調用executeQuery(),返回ResultSet對象

  3. 調用 executeUpdate(),執行增刪改等操作。

其優點也是極其明顯的

  • 不再使用+拼接SQL語句,減少語法錯誤

  • 有效的解決了SQL注入問題

  • 大大減少了編譯次數,效率提高

話不多說,我們直接上案例

String sql = "select name , pwd from admin where name =? and pwd = ?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "劉德華"); 
preparedStatement.setString(2, "123");
ResultSet resultSet = preparedStatement.executeQuery(sql);
if (resultSet.next()) { //如果查詢到一條記錄,則說明該管理存在 
    System.out.println("恭喜, 登錄成功"); } 
else {
    System.out.println("對不起,登錄失敗"); 
     }

4. 關閉資源

在JDBC編碼過程中,我們創建了resultSet,statement,connection等資源,這些資源在使用完畢后一定要進行關閉資源,關閉的過程中遵循從里到外的原則,因為在增刪改查中的操作中都要用到這樣的關閉操作

resultSet.close();
statement.close();
connection.close();

5. 獲取數據庫連接的五種方式

方式一

直接通過Driver類獲得連接

 public void way1() throws SQLException {
        Driver driver = new Driver();
        String url = "jdbc:mysql://localhost:3306/zxy_db01";
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("psd","123");
        Connection connect = driver.connect(url, info);
        System.out.println(connect);
    }

方式二

通過反射的方式加載Driver類獲得連接

 public void way2() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        Class<?> clzz = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) clzz.newInstance();
        String url = "jdbc:mysql://localhost:3306/zxy_db01";
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("psd","123");
        Connection connect = driver.connect(url, info);
        System.out.println(connect);
    }

方式三

使用DriverManager替換Driver獲得連接

 public void way3() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        Class<?> clzz = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) clzz.newInstance();
        String url="jdbc:mysql://localhost:3306/zxy_db01";
        String user="root";
        String psw = "123";
        DriverManager.registerDriver(driver);
        Connection connection = DriverManager.getConnection(url,user,password);
        System.out.println(connection);
    }

方式四

使用Class.forName自動完成驅動注冊獲得鏈接

public void way4() throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/zxy_db01";
        String user="root";
        String psd = "123";
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

方式五

借助配置文件獲得來獲得連接

JDBC如何獲取連接

user=root
psd=123
url=jdbc:mysql://localhost:3306/zxy_db01
driver=com.mysql.jdbc.Driver
 public void way5() throws SQLException, ClassNotFoundException, IOException {
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properties"));
        String user = properties.getProperty("user");
        String password = properties.getProperty("psd");
        String url = properties.getProperty("url");
        String driver = properties.getProperty("driver");
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, psd);
        System.out.println(connection);
    }

讀到這里,這篇“JDBC如何獲取連接”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

买车| 广宗县| 尼玛县| 正宁县| 宁河县| 文昌市| 信丰县| 丹寨县| 锡林浩特市| 图片| 山东省| 南丹县| 金平| 山阴县| 嘉定区| 麻城市| 醴陵市| 大厂| 肥乡县| 锡林郭勒盟| 平江县| 资阳市| 黄龙县| 甘泉县| 邵东县| 灵宝市| 保定市| 景泰县| 札达县| 兴宁市| 海林市| 西藏| 治县。| 宣化县| 海南省| 河西区| 石屏县| 万全县| 广饶县| 麟游县| 大埔区|