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

WBOY
發布: 2022-07-11 13:45:12
轉載
1994 人瀏覽過

本篇文章為大家帶來了關於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.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!