使用Java操作MySQL實(shí)現(xiàn)數(shù)據(jù)交互的方法
JDBC的認(rèn)識(shí):
JDBC,即Java Database Connectivity,java數(shù)據(jù)庫連接。是一種用于執(zhí)行SQL語句的Java API,它是Java中的數(shù)據(jù)庫連接規(guī)范。它為Java開發(fā)人員操作數(shù)據(jù)庫提供了一個(gè)標(biāo)準(zhǔn)的API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問;
由于每個(gè)廠商的數(shù)據(jù)庫的API都不同,為了進(jìn)行統(tǒng)一管理,Java提供了一套標(biāo)準(zhǔn)的API接口標(biāo)準(zhǔn),每個(gè)數(shù)據(jù)庫都得安裝這套標(biāo)準(zhǔn)才能在Java中使用,這套標(biāo)準(zhǔn)就是JDBC;
JDBC的作用可以在Java中對數(shù)據(jù)庫進(jìn)行增刪改查操作;
安裝MySQL驅(qū)動(dòng)包:
只要安裝了JDK就自帶了JDBC,JDBC是Java標(biāo)準(zhǔn)庫中提供的,但是Java要想操作數(shù)據(jù)庫,就得下載它的數(shù)據(jù)庫驅(qū)動(dòng)包,得適配到Java中
中央倉庫:https://mvnrepository.com/
中央倉庫:有大佬將Java中日常開發(fā)中可能會(huì)使用到的第三方庫,安裝包統(tǒng)一收集在一個(gè)網(wǎng)站中,這個(gè)網(wǎng)站就叫做“中央倉庫”;

因?yàn)槲沂褂玫臄?shù)據(jù)庫是5.7版本的,屬于舊版本,下載舊版本的驅(qū)動(dòng)包即可;

隨便哪個(gè)版本都行,只需前面的大版本對應(yīng)你的MySQL版本就行

下載jar文件

下載完成后將包導(dǎo)入IDEA
1)在項(xiàng)目中創(chuàng)建一個(gè)新目錄

2)將jar包復(fù)制粘貼到lib包中

3)右擊.jar文件 選擇 點(diǎn)擊OK


4)添加完成

實(shí)現(xiàn)代碼:
1.創(chuàng)建數(shù)據(jù)源
//1.創(chuàng)建數(shù)據(jù)源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");


這里設(shè)置了賬號(hào)密碼使用的有連接方式
客戶端-服務(wù)器之間的通信有倆種:
有連接:這里JDBC使用的就是這種,需要雙方同意才能進(jìn)行操作。
例如:打電話,A打B的電話,B必須接收才能相互通信
無連接:類似發(fā)短信,不需要對方同意,也可以直接發(fā)送
2.和數(shù)據(jù)庫服務(wù)器建立連接
//2.和數(shù)據(jù)庫服務(wù)器建立連接
Connection connection = dataSource.getConnection();
這塊不要導(dǎo)錯(cuò)包,否則會(huì)出現(xiàn)錯(cuò)誤;
在getConnection()這個(gè)方法的可能會(huì)連接失敗 有以下幾點(diǎn)可能:
1.數(shù)據(jù)庫服務(wù)器沒有正確啟動(dòng)
2.url寫錯(cuò)了
3.用戶名寫錯(cuò)了
4.密碼填錯(cuò)了
5.網(wǎng)絡(luò)斷開.....
3.構(gòu)造操作數(shù)據(jù)庫的 sql 語句.
//3.構(gòu)造操作數(shù)據(jù)庫語句
System.out.println("請輸入學(xué)號(hào): ");
int id = scanner.nextInt();
System.out.println("請輸入姓名: ");
String name = scanner.next();
String sql = "insert into student values(?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
preparedStatement.setString(2, name);prepareStatement(sql) 方法將 SQL 語句傳遞給數(shù)據(jù)庫,準(zhǔn)備執(zhí)行。PreparedStatement 提供了一種預(yù)編譯的方式,確保 SQL 語句能更高效地執(zhí)行,并且可以有效防止 SQL 注入。
在sql語句中使用到?這種占位符
preparedStatement:可以設(shè)置sql語句對應(yīng)的占位符位置,并且下標(biāo)是從1開始
4.執(zhí)行SQL語句
//4.執(zhí)行SQL語句
int n = preparedStatement.executeUpdate();
System.out.println("n = "+n);
有倆種方法:
- executeQuery() 方法執(zhí)行后返回單個(gè)結(jié)果集的,通常用于select語句
- executeUpdate()方法返回值是一個(gè)整數(shù),指示受影響的行數(shù),通常用于update、insert、delete語句
5.釋放資源
//5.釋放資源
preparedStatement.close();
connection.close();對應(yīng)前面創(chuàng)建的資源都得手動(dòng)釋放掉,以免不必要的浪費(fèi)
完整代碼:
Insert:
public class Demo {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
//1.創(chuàng)建數(shù)據(jù)源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
//2.和數(shù)據(jù)庫服務(wù)器建立連接
Connection connection = dataSource.getConnection();
//3.構(gòu)造操作數(shù)據(jù)庫語句
System.out.println("請輸入學(xué)號(hào): ");
int id = scanner.nextInt();
System.out.println("請輸入姓名: ");
String name = scanner.next();
String sql = "insert into student values(?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
preparedStatement.setString(2, name);
//4.執(zhí)行SQL語句
int n = preparedStatement.executeUpdate();
System.out.println("n = "+n);
//5.釋放資源
preparedStatement.close();
connection.close();
}
}
Select:
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
//1.創(chuàng)建數(shù)據(jù)源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
//2.和數(shù)據(jù)庫服務(wù)器建立連接
Connection connection = dataSource.getConnection();
//3.構(gòu)造操作數(shù)據(jù)庫語句
String sql = "select * from student";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//4.執(zhí)行語句
ResultSet resultSet = preparedStatement.executeQuery();
//遍歷結(jié)果
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id = "+id +", name = " + name);
}
//5.資源釋放
resultSet.close();
preparedStatement.close();;
connection.close();
}ResultSet對象它被稱為結(jié)果集,它代表符合SQL語句條件的所有行,并且它通過一套getXXX方法提供了對這些行中數(shù)據(jù)的訪問。
ResultSet里的數(shù)據(jù)一行一行排列,每行有多個(gè)字段,并且有一個(gè)記錄指針,指針?biāo)傅臄?shù)據(jù)行叫做當(dāng)前數(shù)據(jù)行,我們只能來操作當(dāng)前的數(shù)據(jù)行。我們?nèi)绻胍〉媚骋粭l記錄,就要使用ResultSet的next()方法 ,如果我們想要得到ResultSet里的所有記錄,就應(yīng)該使用while循環(huán)。

Update:
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
//1.建立數(shù)據(jù)源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("040518");
//2.建立連接
Connection connection = dataSource.getConnection();
//3.構(gòu)建sql
String sql = "update student set name = 'wangwu' where id = 2";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//4.執(zhí)行sql
int n = preparedStatement.executeUpdate();
System.out.println("n = " + n);
//5.釋放資源
preparedStatement.close();
connection.close();
}
到此這篇關(guān)于使用Java操作MySQL實(shí)現(xiàn)數(shù)據(jù)交互的文章就介紹到這了,更多相關(guān)java mysql數(shù)據(jù)交互內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring boot 本地圖片不能加載(圖片路徑)的問題及解決方法
這篇文章主要介紹了spring boot 本地圖片不能加載(圖片路徑)的問題,解決的辦法其實(shí)很簡單,只要寫一個(gè)配置文件,也就是圖片位置的轉(zhuǎn)化器,原理是虛擬一個(gè)在服務(wù)器上的文件夾,與本地圖片的位置進(jìn)行匹配。需要的朋友可以參考下2018-04-04
SpringBoot實(shí)現(xiàn)國際化的配置方法
隨著一個(gè)系統(tǒng)的規(guī)模做上去之后,國際化的問題就會(huì)逐漸暴露出來,簡單來說,當(dāng)你的系統(tǒng)面對的不再是本國的用戶,而要面臨海外用戶時(shí),系統(tǒng)必須要能適配國際化,所以本文給大家介紹了SpringBoot實(shí)現(xiàn)國際化的配置方法,需要的朋友可以參考下2025-11-11
一文帶你看懂Android動(dòng)畫的實(shí)現(xiàn)原理
動(dòng)畫是 Android 應(yīng)用程序中重要的交互特性,ndroid 提供了多種動(dòng)畫效果,包括平移、縮放、旋轉(zhuǎn)和透明度等,它們可以通過代碼或 XML 來實(shí)現(xiàn),本文將介紹 Android 動(dòng)畫的原理和實(shí)現(xiàn)方法,并提供一些示例,需要的朋友可以參考下2023-07-07
Java redisson實(shí)現(xiàn)分布式鎖原理詳解
這篇文章主要介紹了Java redisson實(shí)現(xiàn)分布式鎖原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Spring Boot中使用 Spring Security 構(gòu)建權(quán)限系統(tǒng)的示例代碼
本篇文章主要介紹了Spring Boot中使用 Spring Security 構(gòu)建權(quán)限系統(tǒng)的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08

