久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL數據庫JDBC編程知識點有哪些

124次閱讀
沒有評論

共計 6606 個字符,預計需要花費 17 分鐘才能閱讀完成。

本篇內容主要講解“MySQL 數據庫 JDBC 編程知識點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“MySQL 數據庫 JDBC 編程知識點有哪些”吧!

1.JDBC 前置工作 1.1 準備好 MySQL 驅動包

MySQL 的 jdbc 驅動包我們可以去官網下載,我們也可以 maven 中央倉庫下載,這個 maven 中央倉庫是什么呢?你可以理解為我們手機中的“應用商店”軟件,它的作用和應用商店的作用是差不多的,只不過手機應用商店里面是手機軟件,而 maven 中央倉庫里面有許多的 API 以及依賴包。

現在 MySQL 已經被 Oracle 收購了,Oracle 的“吃相”有點難看,從官網找可以找到,但是我感覺 maven 中央倉庫更好找一點,所以我們到 maven 中央倉庫下載 jdbc 驅動包。

第一步,點進網址進入 maven 中央倉庫。

第二步,搜索 MySQL,選擇如下圖那一個。

第三步,點擊進入,找到對應大版本的 jdbc 驅動包,如果你的 MySQL 是 5 版本那驅動包也選擇 5 版本的,當然如果你的 MySQL 是 8 版本,那你的驅動包也選擇 8 版本。

我的 MySQL 是 5 版本所以我選擇大版本為 5 的驅動包。

第四步,點擊進去,按下圖操作,下載驅動包。

下載完成我們的驅動包就準備好了。

1.2 創建項目

使用編譯器創建一個項目,項目創建好后,按照下面的步驟操作:

第一步,創建一個目錄,名字隨便起,不妨叫做 lib 目錄。

第二步,將下載好的驅動包拷貝到該目錄。

第三步,設置選項,右鍵剛才創建并已經將驅動包拷貝的目錄,找到 As a Lib…

這樣我們的驅動包就導進我們的項目中了,然后我們就能來寫 jdbc 代碼了。

2.JDBC 編程步驟 2.1 創建數據源 DataSource

第一步,創建 DataSource 對象,來描述這個數據庫在哪里。

DataSource dataSource = new MysqlDataSource();

其中 DataSource 為 java.sql 里面的一個 jdbc 接口,MysqlDataSource 是來源與我們所下載驅動包中的一個實現 DataSource 接口的類。

第二步,設置數據庫的“位置”(URL),登錄數據庫的賬戶名和密碼。

 // 設置數據庫所在地址
 ((MysqlDataSource)dataSource).setURL( jdbc:mysql://127.0.0.1:3306/jdbctest/characterEncoding=utf8 useSSL=false 
 // 設置登錄數據庫的賬戶名
 ((MysqlDataSource)dataSource).setUser( root 
 // 設置登錄數據庫的密碼
 ((MysqlDataSource)dataSource).setPassword(123456

jdbc:mysql://127.0.0.1:3306/jdbctest?characterEncoding=utf8 useSSL=false 就是一個 URL,也叫唯一資源定位符。
jdbc:mysql 表示該 url 是用于 jdbc mysql 的 URL,因為數據庫有很多,不止 jdbc 一種,所以需要細分。

具體含義自主對照:URL 類型聲明:// 數據庫的地址 / 數據庫名? 字符集編碼 是否加密。

2.2 連接數據庫

第三步,和服務器建立連接,創建好數據源 DataSource 對象后,調用該對象的 getConnection() 方法,獲取 java.sql.Connection 對象,這樣就與數據庫建立起來連接了。

Connection connection = dataSource.getConnection();

2.3 構造并執行 sql 語句(插入操作為例)

第四步,構造 sql 語句字符串,并將該語句包裝成 PreparedStatement 對象,即調用 Connection 對象的 prepareStatement 方法,參數是 sql 字符串,會返回一個 PreparedStatement 對象,然后我們再調用 PreparedStatement 對象中的 executeUpdate 方法或 executeQuery 方法執行 sql 語句。

我們先以插入操作為例。

 // 操作數據庫   關鍵在于構造 sql 語句
 //jdbc  構造的 sql 語句不需要帶上;
 String sql =  insert into student values(1,  張三) 
 // 將 sql 字符串包裝成一個語句對象,表示待執行的 sql 的對象
 PreparedStatement statement = connection.prepareStatement(sql);
 // 執行 sql
 // 如果待執行的 sql 語句操作是 insert, update, delete, 則使用 executeUpdate 方法執行, 返回值為影響數據的行數
 // 如果待執行的 sql 語句操作是 select, 則使用 executeQuery 方法執行
 int ret = statement.executeUpdate();

其中,如果待執行的 sql 語句操作是 insert, update, delete, 則使用 executeUpdate 方法執行,返回值為影響數據的行數,如果待執行的 sql 語句操作是 select, 則使用 executeQuery 方法執行,返回值是一個 ResultSet 結果表對象。

2.4 及時釋放資源

第五步,釋放資源,我們執行完畢 sql 語句后需要及時地將資源釋放,在 JDBC 編程中,最常見需要釋放的類或接口有三個,分別是 Connection,PreparedStatement,ResultSet,其中前面兩個在 jdbc 插入操作中已經使用過了,而最后一個,即 ResultSet,它是在執行查詢語句需要用到的,調用 executeQuery 方法執行查詢語句之后,會返回一個“臨時表”,該“臨時表”上儲存了查詢的結果,我們可以通過遍歷該結果表來獲取查詢數據庫的結果。

// 此時 sql 語句已經執行完畢了,需要釋放資源 statement.close();connection.close();

使用 jdbc 編程進行插入操作全部代碼:

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.Scanner;public class TestJdbc { public static void main(String[] args) throws SQLException { DataSource dataSource = new MysqlDataSource();
 // 設置數據庫所在地址
 ((MysqlDataSource)dataSource).setURL( jdbc:mysql://127.0.0.1:3306/jdbctest?characterEncoding=utf8 useSSL=false 
 // 設置登錄數據庫的賬戶名
 ((MysqlDataSource)dataSource).setUser( root 
 // 設置登錄數據庫的密碼
 ((MysqlDataSource)dataSource).setPassword( 123456 
 // 建立連接
 Connection connection = dataSource.getConnection();
 // 操作數據庫   關鍵在于構造 sql 語句
 //jdbc  構造的 sql 語句不需要帶上;
 String sql =  insert into student values(1,  張三) 
 // 將 sql 字符串包裝成一個語句對象,表示待執行的 sql 的對象
 PreparedStatement statement = connection.prepareStatement(sql);
 // 執行 sql
 // 如果待執行的 sql 語句操作是 insert, update, delete, 則使用 executeUpdate 方法執行, 返回值為影響數據的行數
 // 如果待執行的 sql 語句操作是 select, 則使用 executeQuery 方法執行
 int ret = statement.executeUpdate();
 // 此時 sql 語句已經執行完畢了,需要釋放資源
 statement.close();
 connection.close();
 }}

運行結果,我們通過查詢數據庫的表的結果來進行觀察:

mysql  create database jdbctest;Query OK, 1 row affected (0.01 sec)mysql  use jdbctest;Database changed
mysql  create table student(id int, name varchar(20));Query OK, 0 rows affected (0.02 sec)mysql  show tables;+--------------------+| Tables_in_jdbctest |+--------------------+| student |+--------------------+1 row in set (0.00 sec)--  執行 jdbc 代碼后查詢 mysql  select * from student;+------+--------+| id | name |+------+--------+| 1 |  張三  |+------+--------+1 row in set (0.00 sec)

程序運行結果,表示 1 行受到了影響。

2.5 不要寫死的代碼(以插入為例)

我們發現我們的 sql 語句是完完全全寫死的,這一點不好,我們可以使用輸入的操作讓用戶輸入信息進行插入,那就需要使用到 Scanner 類了。

我們得到用戶輸入的信息后,我們需要對信息進行整合,最容易想到的方式就是字符串拼接,但是這么做有如下的缺點,一是容易寫錯,特別是單雙引號比較多的情況下,二是不安全,黑客可以使用 sql 注入的方式來修改數據庫。

所以更好的方法就是把 sql 字符串中待輸入的信息使用? 來代替或者叫做占位,然后通過 PreparedStatement 中的 setXXX 系列方法來逐個設置每個? 的內容是什么。

這個系列的方法,第一個參數表示 sql 待執行對象中第多少個?,第二個參數表示將這個? 設置的內容。比如:

 // 操作數據庫   關鍵在于構造 sql 語句
 //jdbc  構造的 sql 語句不需要帶上;
 String sql =  insert into student values(?, ?) 
 // 將 sql 字符串包裝成一個語句對象,表示待執行的 sql 的對象
 PreparedStatement statement = connection.prepareStatement(sql);
 statement.setInt(1, id);
 statement.setString(2, name);

完整代碼:jdbc 插入操作源代碼

運行結果:
MySQL 數據庫 JDBC 編程知識點有哪些
數據庫查詢結果:

mysql  select * from student;+------+--------+| id | name |+------+--------+| 1 |  張三  || 2 |  李四  |+------+--------+2 rows in set (0.00 sec)

2.6JDBC 刪除,更新操作

在 jdbc 編程中,刪除操作和更新操作,它的步驟與插入操作是一模一樣的,只不過就是構造的 sql 語句不一樣,其他都一樣。

刪除操作關鍵代碼:

 // 用戶輸入
 System.out.println( 請輸入需要刪除的學號: int id = sc.nextInt();
 // 操作數據庫   關鍵在于構造 sql 語句
 //jdbc  構造的 sql 語句不需要帶上;
 String sql =  delete from student where id = ? 
 PreparedStatement statement = connection.prepareStatement(sql);
 statement.setInt(1, id);
 System.out.println(statement  + statement);

程序運行結果:
MySQL 數據庫 JDBC 編程知識點有哪些

數據庫查詢結果:

mysql  select * from student;+------+--------+| id | name |+------+--------+| 1 |  張三  |+------+--------+1 row in set (0.00 sec)

更新操作關鍵代碼:

 // 用戶輸入   需要修改的 id  與修改后的姓名
 System.out.println( 請輸入需要修改的學號: int id = sc.nextInt();
 sc.nextLine();
 System.out.println( 請輸入修改后的姓名: String afterName = sc.nextLine();
 // 操作數據庫   關鍵在于構造 sql 語句
 //jdbc  構造的 sql 語句不需要帶上;
 String sql =  update student set name = ? where id = ? 
 PreparedStatement statement = connection.prepareStatement(sql);
 statement.setString(1, afterName);
 statement.setInt(2, id);
 System.out.println(statement  + statement);

jdbc 更新操作完整代碼:源代碼地址

程序運行結果:

MySQL 數據庫 JDBC 編程知識點有哪些

數據庫查詢結果:

mysql  select * from student;+------+--------+| id | name |+------+--------+| 1 |  王五  |+------+--------+1 row in set (0.00 sec)

2.7JDBC 查詢操作

jdbc 的查詢操作與插入刪除更新操作有一點點不同,執行查詢 sql 語句的時候是調用 executeQuery 方法來執行語句的,并且會帶回查詢的結果,我們可以通過類似與迭代器的操作來獲取查詢的結果,這個結果集使用完后需要將它釋放。

關鍵代碼:

 // 操作數據庫   關鍵在于構造 sql 語句
 //jdbc  構造的 sql 語句不需要帶上;
 String sql =  select * from student 
 PreparedStatement statement = connection.prepareStatement(sql);
 // 執行 sql  查詢操作返回的不是 int  而是一個臨時表   使用 ResultSet 對象表示這個臨時表
 ResultSet ret = statement.executeQuery();
 // 便利結果集合
 // 預期結果格式 // +------+--------+// | id | name |// +------+--------+// | 1 |  王五  |// +------+--------+
 while (ret.next()) {
 int id = ret.getInt( id 
 String name = ret.getString( name 
 System.out.println(id:  + id +  , name:  + name);
 }
 // 關閉資源
 ret.close();
 statement.close();
 connection.close();

程序運行結果:
MySQL 數據庫 JDBC 編程知識點有哪些

到此,相信大家對“MySQL 數據庫 JDBC 編程知識點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計6606字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 乐平市| 涪陵区| 额济纳旗| 会东县| 大理市| 土默特左旗| 桐乡市| 宁陕县| 兴安县| 驻马店市| 青岛市| 阿巴嘎旗| 秀山| 唐河县| 台湾省| 旬阳县| 庆安县| 宜君县| 分宜县| 永德县| 延边| 嵊泗县| 巴东县| 西乡县| 依安县| 宜城市| 广水市| 修武县| 安义县| 南昌县| 营口市| 丰城市| 双辽市| 萝北县| 疏勒县| 吴川市| 昌邑市| 灌南县| 广西| 宁化县| 永靖县|