零基礎(chǔ)掌握J(rèn)DBC操作MySQL
JDBC概述
Java數(shù)據(jù)庫連接,(Java Database Connectivity,簡稱JDBC)是Java語言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫的應(yīng)用程序接口,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法。
IDEA下創(chuàng)建JDBC環(huán)境
??新建 Maven 工程
?
??填寫項(xiàng)目所在目錄、名稱、GroupId、ArtifactId
?
??配置 pom.xml 文件
在此文件中輸入以下代碼,有部分代碼是IDEA自動(dòng)生成,我們只需要補(bǔ)充,代碼補(bǔ)充完成之后,點(diǎn)擊右上角更新按鈕,IDEA就會(huì)開始下載MySQL連接器,有了這個(gè)連接器,我們才能通過Java代碼鏈接MySQL服務(wù)器
首次配置此文件可能需要較長時(shí)間
當(dāng)External Libraries 下出現(xiàn)了 mysql-connector-java 時(shí),說明配置成功
?
?
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hsq</groupId> <artifactId>jdbc-demo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> </dependencies> </project>
JDBC 下操作 SQL 的套路
??操作 SQL 之前的準(zhǔn)備
1. 構(gòu)造好一個(gè) DataSource 對(duì)象
2. 通過 DataSource 得到 Connection 對(duì)象
3. 通過 Connection 對(duì)象 + SQL 語句,得到 Statement 對(duì)象
建議將以下代碼封裝成一個(gè) DBUtil 類,以便之后使用
有了以下代碼就可以正式在 JDBC 下操作 SQL 了
public class DBUtil { private static final DataSource dateSource; static { MysqlDataSource db = new MysqlDataSource(); db.setServerName("localhost"); db.setPort(3306); // MySQL 服務(wù)器端口,一般為3306 db.setUser("root"); // 登錄 MySQL 服務(wù)器的用戶名 db.setPassword("123456"); // 登錄 MySQL 服務(wù)器的密碼 db.setDatabaseName("0331_library"); // 設(shè)置默認(rèn)庫 db.setUseSSL(false); db.setCharacterEncoding("utf-8"); db.setServerTimezone("Asia/Shanghai"); dateSource = db; } public static Connection connection() throws SQLException { return dateSource.getConnection(); } }
??如何使用代碼執(zhí)行SQL
在 JDBC 下操作 SQL 有兩套固定代碼,只需要更換不同的 SQL 語句即可
1. 帶結(jié)果的 SQL 語句 例如:select
2. 不帶結(jié)果的 SQL 語句 例如:delect,update,insert
帶結(jié)果的 SQL 語句
String sql = "要執(zhí)行的 SQL"; try (Connection c = db.getConnection()) { try (PreparedStatement ps = c.prepareStatement(sql)) { try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { int i = rs.getInt(1); String s = rs.getString(2); } } } }
不帶結(jié)果的 SQL 語句
String sql = "不帶結(jié)果的 SQL"; try (Connection c = db.getConnection()) { try (PreparedStatement ps = c.prepareStatement(sql)) { ps.executeUpdate(); } }
上面這兩套代碼的主要區(qū)別是:
有結(jié)果的代碼最后需要一個(gè) ResultSet 對(duì)象,執(zhí)行 ps.executeQuery(),并且需要 while 來得到每一行的結(jié)果
沒有結(jié)果的代碼則直接執(zhí)行ps.executeUpdate() 即可
JDBC 下增刪改查的完整代碼
public class Main { public static void main(String[] args) throws SQLException { MysqlDataSource db = new MysqlDataSource(); db.setServerName("localhost"); db.setPort(3306); db.setUser("root"); db.setPassword("123456"); db.setDatabaseName("0331_library"); db.setUseSSL(false); db.setCharacterEncoding("utf-8"); db.setServerTimezone("Asia/Shanghai"); // 增 try (Connection c = db.getConnection()) { String sql = "insert into readers (name) values ('陳浩')"; try (PreparedStatement ps = c.prepareStatement(sql)) { ps.executeUpdate(); } } // 刪 try (Connection c = db.getConnection()) { String sql = "delete from readers where rid = 1"; try (PreparedStatement ps = c.prepareStatement(sql)) { ps.executeUpdate(); } } // 改 try (Connection c = db.getConnection()) { String sql = "update readers set name = '123' where rid = 1"; try (PreparedStatement ps = c.prepareStatement(sql)) { ps.executeUpdate(); } } // 查 try (Connection c = db.getConnection()) { String sql = "select name from readers where rid = 1"; try (PreparedStatement ps = c.prepareStatement(sql)) { try (ResultSet rs = ps.executeQuery()) { where (rs.next) { String name = rs.getString(1); } } } } }
到此這篇關(guān)于零基礎(chǔ)掌握J(rèn)DBC操作 MySQL的文章就介紹到這了,更多相關(guān)JDBC操作 MySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入探索數(shù)據(jù)庫MySQL性能優(yōu)化與復(fù)雜查詢相關(guān)操作
數(shù)據(jù)庫MySQL 是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在進(jìn)行 MySQL 數(shù)據(jù)庫開發(fā)過程中,需要深入了解如何進(jìn)行性能優(yōu)化和復(fù)雜查詢,以提高系統(tǒng)的效率和可靠性,本文介紹的非常詳細(xì),需要的朋友可以參考一下2023-04-04Navicat出現(xiàn)無法遠(yuǎn)程連接MySql服務(wù)器問題的解決辦法
這篇文章主要介紹了Navicat出現(xiàn)無法遠(yuǎn)程連接MySql服務(wù)器問題的解決辦法,文章通過思路判斷出現(xiàn)問題的情況,然后進(jìn)行逐一排查,確定問題出現(xiàn)的原因并給出解決辦法,本文對(duì)此問題的解決介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08允許遠(yuǎn)程訪問MySQL的實(shí)現(xiàn)方式
這篇文章主要介紹了允許遠(yuǎn)程訪問MySQL的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01MYSQL主庫切換binlog模式后主從同步錯(cuò)誤的解決方案
在使用FlinkSQL的mysql-cdc連接器來監(jiān)聽MySQL數(shù)據(jù)庫時(shí),通常需要將MySQL的binlog模式設(shè)置為ROW模式,當(dāng)我們將MySQL主庫的binlog模式從STATEMENT切換為ROW并重啟MySQL服務(wù)后,MySQL從庫在同步時(shí)可能會(huì)報(bào)錯(cuò),所以本文介紹了MYSQL主庫切換binlog模式后主從同步錯(cuò)誤的解決方案2024-08-08MySQL循環(huán)插入千萬級(jí)數(shù)據(jù)
這篇文章主要介紹了MySQL如何實(shí)現(xiàn)循環(huán)插入千萬級(jí)數(shù)據(jù),幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2020-09-09MySQL觸發(fā)器基本用法詳解【創(chuàng)建、查看、刪除等】
這篇文章主要介紹了MySQL觸發(fā)器基本用法,結(jié)合實(shí)例形式分析了mysql觸發(fā)器的基本創(chuàng)建、查看、刪除等相關(guān)使用方法與注意事項(xiàng),需要的朋友可以參考下2020-05-05