搜尋
首頁資料庫mysql教程MySQL資料庫JDBC程式設計知識點總結

本篇文章為大家帶來了關於mysql的相關知識,其中主要整理了JDBC程式設計知識點的相關問題,JDBC(Java DataBase Connectivity,java資料庫連接)是一種用於執行SQL語句的Java API,可以為多種關聯式資料庫提供統一訪問,它由一組用Java語言編寫的類別和介面組成,下面一起來看一下,希望對大家有幫助。

MySQL資料庫JDBC程式設計知識點總結

推薦學習:mysql影片教學

#本篇文章將介紹JDBC編程,JDBC(Java DataBase Connectivity,java資料庫連接)是一種用於執行SQL語句的Java API,可以為多種關係型資料庫提供統一訪問,它由一組用Java語言編寫的類別和介面組成。

MySQL資料庫JDBC程式設計知識點總結.JDBC前置工作資料庫JDBC程式設計知識點總結>MySQL資料庫JDBC程式設計知識點總結.MySQL資料庫JDBC程式設計知識點總結準備好MySQL驅動套件資料庫JDBC程式設計知識點總結>

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

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

網址:maven中央倉庫

第一步,點進網址進入maven中央倉庫。
MySQL資料庫JDBC程式設計知識點總結

第二步,搜尋MySQL,選擇如下圖那一個。
MySQL資料庫JDBC程式設計知識點總結
第三步,點選進入,找到對應大版的jdbc驅動包,如果你的MySQL是5版那驅動包也選5版的,當然如果你的MySQL是MySQL資料庫JDBC程式設計知識點總結版本,那你的驅動包也選擇MySQL資料庫JDBC程式設計知識點總結版。

我的MySQL是5版所以我選擇大版為5的驅動程式套件。
MySQL資料庫JDBC程式設計知識點總結
第四步,點選進去,按圖表操作,下載驅動套件。
MySQL資料庫JDBC程式設計知識點總結
下載完成我們的驅動程式套件就準備好了。

MySQL資料庫JDBC程式設計知識點總結.MySQL資料庫JDBC程式設計知識點總結建立項目資料庫JDBC程式設計知識點總結>

使用編譯器建立一個項目,項目建立好後,按照下面的步驟:

#第一步,建立一個目錄,名字隨便起,不妨叫做lib目錄。
MySQL資料庫JDBC程式設計知識點總結

第二步,將下載好的驅動包拷貝到該目錄。
MySQL資料庫JDBC程式設計知識點總結

第三步,設定選項,右鍵剛才建立並已經將驅動套件拷貝的目錄,找到As a Lib…
MySQL資料庫JDBC程式設計知識點總結
MySQL資料庫JDBC程式設計知識點總結
這樣我們的驅動包就導進我們的專案了,然後我們就能來寫jdbc程式碼了。

MySQL資料庫JDBC程式設計知識點總結.JDBC程式設計步驟資料庫JDBC程式設計知識點總結>MySQL資料庫JDBC程式設計知識點總結.MySQL資料庫JDBC程式設計知識點總結建立資料來源DataSource資料庫JDBC程式設計知識點總結>

第一步,建立DataSource對象,來描述這個資料庫在哪裡。

DataSource dataSource = new MysqlDataSource();

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

第二步,設定資料庫的「位置」(URL),登入資料庫的帳號名稱和密碼。

        //设置数据库所在地址
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結.0.0.MySQL資料庫JDBC程式設計知識點總結:MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結06/jdbctest/characterEncoding=utfMySQL資料庫JDBC程式設計知識點總結&useSSL=false");
        //设置登录数据库的账户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結56");

jdbc:mysql://MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結.0.0.MySQL資料庫JDBC程式設計知識點總結:MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結06/jdbctest?characterEncoding=utfMySQL資料庫JDBC程式設計知識點總結&useSSL=false就是一個URL,也叫唯一資源定位符。
jdbc:mysql表示該url是用於jdbc mysql的URL,因為資料庫有很多,不只jdbc一種,所以需要細分。

具體意義自主對照:URL類型聲明://資料庫的位址/資料庫名稱?字元集編碼&是否加密

MySQL資料庫JDBC程式設計知識點總結.MySQL資料庫JDBC程式設計知識點總結連接資料庫資料庫JDBC程式設計知識點總結>

第三步,和伺服器建立連接,建立好資料來源DataSource物件後,呼叫該物件的getConnection()方法,取得java.sql.Connection對象,這樣就與資料庫建立起來連接了。

Connection connection = dataSource.getConnection();
MySQL資料庫JDBC程式設計知識點總結.MySQL資料庫JDBC程式設計知識點總結构造并执行sql语句(插入操作为例)資料庫JDBC程式設計知識點總結>

第四步,构造sql语句字符串,并将该语句包装成PreparedStatement对象,即调用Connection对象的prepareStatement方法,参数是sql字符串,会返回一个PreparedStatement对象,然后我们再调用PreparedStatement对象中的executeUpdate方法或executeQuery方法执行sql语句。

我们先以插入操作为例。

        //操作数据库 关键在于构造sql语句
        //jdbc 构造的sql语句不需要带上;
        String sql = "insert into student values(MySQL資料庫JDBC程式設計知識點總結, MySQL資料庫JDBC程式設計知識點總結9;张三MySQL資料庫JDBC程式設計知識點總結9;)";
        //将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结果表对象。

MySQL資料庫JDBC程式設計知識點總結.MySQL資料庫JDBC程式設計知識點總結及时释放资源資料庫JDBC程式設計知識點總結>

第五步,释放资源,我们执行完毕sql语句后需要及时地将资源释放,在JDBC编程中,最常见需要释放的类或接口有三个,分别是ConnectionPreparedStatementResultSet,其中前面两个在jdbc插入操作中已经使用过了,而最后一个,即ResultSet,它是在执行查询语句需要用到的,调用executeQuery方法执行查询语句之后,会返回一个“临时表”,该“临时表”上储存了查询的结果,我们可以通过遍历该结果表来获取查询数据库的结果。

//此时sql语句已经执行完毕了,需要释放资源statement.close();connection.close();

使用jdbc编程进行插入操作全部代码:

import com.mysql.jdbc.jdbcMySQL資料庫JDBC程式設計知識點總結.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://MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結.0.0.MySQL資料庫JDBC程式設計知識點總結:MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結06/jdbctest?characterEncoding=utfMySQL資料庫JDBC程式設計知識點總結&useSSL=false");
        //设置登录数据库的账户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結MySQL資料庫JDBC程式設計知識點總結56");

        //建立连接
        Connection connection = dataSource.getConnection();

        //操作数据库 关键在于构造sql语句
        //jdbc 构造的sql语句不需要带上;
        String sql = "insert into student values(MySQL資料庫JDBC程式設計知識點總結, MySQL資料庫JDBC程式設計知識點總結9;张三MySQL資料庫JDBC程式設計知識點總結9;)";
        //将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, MySQL資料庫JDBC程式設計知識點總結 row affected (0.0MySQL資料庫JDBC程式設計知識點總結 sec)mysql> use jdbctest;Database changed
mysql> create table student(id int, name varchar(MySQL資料庫JDBC程式設計知識點總結0));Query OK, 0 rows affected (0.0MySQL資料庫JDBC程式設計知識點總結 sec)mysql> show tables;+--------------------+| Tables_in_jdbctest |+--------------------+| student            |+--------------------+MySQL資料庫JDBC程式設計知識點總結 row in set (0.00 sec)-- 执行jdbc代码后查询mysql> select * from student;+------+--------+| id   | name   |+------+--------+|    MySQL資料庫JDBC程式設計知識點總結 | 张三   |+------+--------+MySQL資料庫JDBC程式設計知識點總結 row in set (0.00 sec)

程序运行结果,表示MySQL資料庫JDBC程式設計知識點總結行受到了影响。
MySQL資料庫JDBC程式設計知識點總結

MySQL資料庫JDBC程式設計知識點總結.5不要写死的代码(以插入为例)資料庫JDBC程式設計知識點總結>

我们发现我们的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(MySQL資料庫JDBC程式設計知識點總結, id);
        statement.setString(MySQL資料庫JDBC程式設計知識點總結, name);

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

运行结果:
MySQL資料庫JDBC程式設計知識點總結
数据库查询结果:

mysql> select * from student;+------+--------+| id   | name   |+------+--------+|    MySQL資料庫JDBC程式設計知識點總結 | 张三   ||    MySQL資料庫JDBC程式設計知識點總結 | 李四   |+------+--------+MySQL資料庫JDBC程式設計知識點總結 rows in set (0.00 sec)
MySQL資料庫JDBC程式設計知識點總結.6JDBC删除,更新操作資料庫JDBC程式設計知識點總結>

在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(MySQL資料庫JDBC程式設計知識點總結, id);
        System.out.println("statement" + statement);

jdbc删除操作完整代码:源代码地址

程序运行结果:
MySQL資料庫JDBC程式設計知識點總結

数据库查询结果:

mysql> select * from student;+------+--------+| id   | name   |+------+--------+|    MySQL資料庫JDBC程式設計知識點總結 | 张三   |+------+--------+MySQL資料庫JDBC程式設計知識點總結 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(MySQL資料庫JDBC程式設計知識點總結, afterName);
        statement.setInt(MySQL資料庫JDBC程式設計知識點總結, id);
        System.out.println("statement" + statement);

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

程序运行结果:

MySQL資料庫JDBC程式設計知識點總結

数据库查询结果:

mysql> select * from student;+------+--------+| id   | name   |+------+--------+|    MySQL資料庫JDBC程式設計知識點總結 | 王五   |+------+--------+MySQL資料庫JDBC程式設計知識點總結 row in set (0.00 sec)
MySQL資料庫JDBC程式設計知識點總結.MySQL資料庫JDBC程式設計知識點總結JDBC查询操作資料庫JDBC程式設計知識點總結>

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   |//        +------+--------+//        |    MySQL資料庫JDBC程式設計知識點總結 | 王五   |//        +------+--------+
        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();

jdbc查询操作完代码:源代码地址

程序运行结果:
MySQL資料庫JDBC程式設計知識點總結0
好了,JDBC的全部内容差不多就是这一些,所有的完整代码链接:地址。

推荐学习:mysql视频教程

以上是MySQL資料庫JDBC程式設計知識點總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
MySQL的位置:數據庫和編程MySQL的位置:數據庫和編程Apr 13, 2025 am 12:18 AM

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL:從小型企業到大型企業MySQL:從小型企業到大型企業Apr 13, 2025 am 12:17 AM

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?Apr 13, 2025 am 12:16 AM

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

mysql:不是編程語言,而是...mysql:不是編程語言,而是...Apr 13, 2025 am 12:03 AM

MySQL不是一門編程語言,但其查詢語言SQL具備編程語言的特性:1.SQL支持條件判斷、循環和變量操作;2.通過存儲過程、觸發器和函數,用戶可以在數據庫中執行複雜邏輯操作。

MySQL:世界上最受歡迎的數據庫的簡介MySQL:世界上最受歡迎的數據庫的簡介Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL的重要性:數據存儲和管理MySQL的重要性:數據存儲和管理Apr 12, 2025 am 12:18 AM

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

為什麼要使用mysql?利益和優勢為什麼要使用mysql?利益和優勢Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。Apr 12, 2025 am 12:16 AM

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器