MySQL五步走JDBC編程全解讀
一、數(shù)據(jù)庫(kù)編程的必備條件
編程語(yǔ)言,如Java,C、C++、Python等 數(shù)據(jù)庫(kù),如Oracle,MySQL,SQL Server等 數(shù)據(jù)庫(kù)驅(qū)動(dòng)包:不同的數(shù)據(jù)庫(kù),對(duì)應(yīng)不同的編程語(yǔ)言提供了不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)包,如:MySQL提 供了Java的驅(qū)動(dòng)包mysql-connector-java,需要基于Java操作MySQL即需要該驅(qū)動(dòng)包。同樣的, 要基于Java操作Oracle數(shù)據(jù)庫(kù)則需要Oracle的數(shù)據(jù)庫(kù)驅(qū)動(dòng)包ojdbc。
二、Java的數(shù)據(jù)庫(kù)編程:JDBC
JDBC,即Java Database Connectivity,java數(shù)據(jù)庫(kù)連接。是一種用于執(zhí)行SQL語(yǔ)句的Java API,它是 Java中的數(shù)據(jù)庫(kù)連接規(guī)范。這個(gè)API由 java.sql.*,javax.sql.* 包中的一些類(lèi)和接口組成,它為Java 開(kāi)發(fā)人員操作數(shù)據(jù)庫(kù)提供了一個(gè)標(biāo)準(zhǔn)的API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪(fǎng)問(wèn)。
三、JDBC工作原理
DBC 為多種關(guān)系數(shù)據(jù)庫(kù)提供了統(tǒng)一訪(fǎng)問(wèn)方式,作為特定廠商數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)API的一種高級(jí)抽象,它主要包 含一些通用的接口類(lèi)。
JDBC訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)層次結(jié)構(gòu):
四、開(kāi)發(fā)環(huán)境搭建
首先在電腦服務(wù)當(dāng)中查看自己MySQL的版本,然后進(jìn)入maven倉(cāng)庫(kù)
因?yàn)槲易约旱陌姹臼?.0之后的,所以我選擇5.1.47,大版本要一致
下載jar即可,記住,jar包不能解壓縮
接下來(lái)就在idea自己在根目錄下創(chuàng)建文件夾,然后導(dǎo)入jar包
沒(méi)有報(bào)錯(cuò)一直O(jiān)K下去就沒(méi)有啥問(wèn)題,說(shuō)明導(dǎo)入成功
五、MySQL中的JDBC編程
1、五步流程
建立數(shù)據(jù)庫(kù)連接
// 加載JDBC驅(qū)動(dòng)程序:反射,這樣調(diào)用初始化com.mysql.jdbc.Driver類(lèi),即將該類(lèi)加載到JVM方法 區(qū),并執(zhí)行該類(lèi)的靜態(tài)方法塊、靜態(tài)屬性。 Class.forName("com.mysql.jdbc.Driver"); // 創(chuàng)建數(shù)據(jù)庫(kù)連接 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test? user=root&password=root&useUnicode=true&characterEncoding=UTF-8");
//MySQL數(shù)據(jù)連接的URL參數(shù)格式如下: jdbc:mysql://服務(wù)器地址:端口/數(shù)據(jù)庫(kù)名?參數(shù)名=參數(shù)值
創(chuàng)建操作命令(Statement)
Statement statement = connection.createStatement();
執(zhí)行SQL語(yǔ)句
ResultSet resultSet= statement.executeQuery( "select id, sn, name, qq_mail, classes_id from student");
處理結(jié)果集
while (resultSet.next()) { int id = resultSet.getInt("id"); String sn = resultSet.getString("sn"); String name = resultSet.getString("name"); int classesId = resultSet.getInt("classes_id"); System.out.println(String.format("Student: id=%d, sn=%s, name=%s, classesId=%s", id, sn, name, classesId)); }
釋放資源(關(guān)閉結(jié)果集,命令,連接)
//關(guān)閉結(jié)果集 if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } //關(guān)閉命令 if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } //關(guān)閉連接命令 if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } }
2、添加信息
首先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)并且創(chuàng)建一個(gè)表
create database java122;
create table text(id int,name varchar(5),class_id int);
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class TextJDBC { //DataSource //Connection //PrepareStatement public static void main(String[] args) throws SQLException{ //1、創(chuàng)建DataSource對(duì)象 DataSource dataSource = new MysqlDataSource(); //設(shè)置相關(guān)內(nèi)容 //URL User password //向下轉(zhuǎn)型 訪(fǎng)問(wèn)數(shù)據(jù)庫(kù) 協(xié)議名 ip地址 要訪(fǎng)問(wèn)那個(gè)地址 ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java122?characterEncoding=utf-8&useSSL=false"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("180210"); //2、和數(shù)據(jù)庫(kù)連接.進(jìn)行后續(xù)連接 //connect生命周期較短 Connection connection = dataSource.getConnection(); //3、拼裝SQL語(yǔ)句 int id = 1; String name = "曹操"; int class_id = 10; //?是一個(gè)占位符,可以把一個(gè)具體的變量的值替換到? String sql = "insert into text values(?,?,?)"; PreparedStatement statement = connection.prepareStatement(sql); //1 2 3相當(dāng)與?的下標(biāo) statement.setInt(1,id); statement.setString(2,name); statement.setInt(3,class_id); System.out.println("statement:" + statement); //4、執(zhí)行SQL語(yǔ)句 int ret = statement.executeUpdate(); System.out.println("ret:" + ret); //5、關(guān)閉相關(guān)資源 //后創(chuàng)建的先釋放,順序不能錯(cuò) statement.close(); connection.close(); } }
3、查詢(xún)信息
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import javax.xml.transform.Source; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Scanner; public class Text1 { public static void main(String[] args) throws SQLException { //1,創(chuàng)建實(shí)列 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java122?characterEncoding=utf-8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("180210"); //2,數(shù)據(jù)庫(kù)連接 Connection connection = dataSource.getConnection(); //3,構(gòu)造SQL語(yǔ)句 String sql ="select * from text"; PreparedStatement statement = connection.prepareStatement(sql); //4,執(zhí)行SQL語(yǔ)句 ResultSet resultSet = statement.executeQuery(); while (resultSet.next()){ int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int class_id = resultSet.getInt("class_id"); System.out.println("id: " + id + "name: " + name + "class_id: " + class_id); } //5,關(guān)閉相關(guān)資源 resultSet.close(); statement.close(); connection.close(); } }
4、刪除信息
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 Textur2 { public static void main(String[] args) throws SQLException { Scanner scanner = new Scanner(System.in); System.out.println("請(qǐng)輸入要?jiǎng)h除學(xué)生的姓名:"); String name = scanner.next(); //1,創(chuàng)建實(shí)列 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java122?characterEncoding=utf-8&useSSL=false"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("180210"); //2,數(shù)據(jù)庫(kù)連接 Connection connection = dataSource.getConnection(); //3,構(gòu)造SQL語(yǔ)句 String sql = "delete from text where name = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1,name); //4,執(zhí)行SQL int ret = statement.executeUpdate(); if (ret == 1){ System.out.println("刪除成功"); }else { System.out.println("刪除失敗"); } //5,關(guān)閉資源 statement.close(); connection.close(); } }
5、修改信息
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 Text4 { public static void main(String[] args) throws SQLException { //修改信息 Scanner scanner = new Scanner(System.in); System.out.println("請(qǐng)輸入學(xué)生的id:"); int id = scanner.nextInt(); System.out.println("請(qǐng)輸入修改學(xué)生姓名:"); String name = scanner.next(); //1,創(chuàng)建實(shí)列 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java122?characterEncoding=utf-8&useSSL=false"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("180210"); //2,數(shù)據(jù)庫(kù)連接 Connection connection = dataSource.getConnection(); //3,拼裝SQL String sql = "update text set name = ? where id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1,name); statement.setInt(2,id); //4,執(zhí)行SQL int set = statement.executeUpdate(); if (set == 1){ System.out.println("修改成功"); }else { System.out.println("修改失敗"); } //5,關(guān)閉資源 statement.close(); connection.close(); } }
到此這篇關(guān)于MySQL五步走JDBC編程全解讀的文章就介紹到這了,更多相關(guān)MySQL JDBC編程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
3種高效的Tags標(biāo)簽系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)方案分享
這篇文章主要介紹了3種高效的Tags標(biāo)簽系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)方案分享,現(xiàn)在主流的博客、CMS系統(tǒng)都有一個(gè)標(biāo)簽系統(tǒng),本文就探討它的數(shù)據(jù)庫(kù)設(shè)計(jì)方式,需要的朋友可以參考下2014-07-07SQL實(shí)現(xiàn)Excel的10個(gè)常用功能的示例詳解
SQL,數(shù)據(jù)分析崗的必備技能,你可以不懂Python,R,不懂可視化,不懂機(jī)器學(xué)習(xí)。但SQL,你必須懂。本文為大家總結(jié)了SQL實(shí)現(xiàn)Excel的10個(gè)常用功能的示例代碼,感興趣的可以了解一下2022-07-07MySQL group by和left join并用解決方式
這篇文章主要介紹了MySQL group by和left join并用解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12SQL中的開(kāi)窗函數(shù)(窗口函數(shù))
這篇文章主要介紹了SQL中的開(kāi)窗函數(shù)(窗口函數(shù))使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08oracle轉(zhuǎn)mysql語(yǔ)句轉(zhuǎn)換實(shí)例代碼
最近由于公司業(yè)務(wù)上需要,需要將原項(xiàng)目的數(shù)據(jù)庫(kù)由oracle轉(zhuǎn)換成mysql,下面這篇文章主要給大家介紹了關(guān)于oracle轉(zhuǎn)mysql語(yǔ)句轉(zhuǎn)換的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06golang實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)備份的操作方法
這篇文章主要介紹了golang實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)備份的操作方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06MySQL定時(shí)備份數(shù)據(jù)庫(kù)操作示例
這篇文章主要介紹了MySQL定時(shí)備份數(shù)據(jù)庫(kù)操作,結(jié)合實(shí)例形式分析了MySQL定時(shí)備份數(shù)據(jù)庫(kù)相關(guān)命令、原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2020-03-03