亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Java操作MySQL實(shí)現(xiàn)數(shù)據(jù)交互的方法

 更新時(shí)間:2025年01月09日 09:50:40   作者:呼啦啦啦啦啦啦啦啦  
JDBC是Java中用于操作數(shù)據(jù)庫的API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它通過JDK自帶的JDBC API和數(shù)據(jù)庫驅(qū)動(dòng)包進(jìn)行操作,實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查,本文給大家介紹使用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中對(duì)數(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è)版本都行,只需前面的大版本對(duì)應(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ā)短信,不需要對(duì)方同意,也可以直接發(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("請(qǐng)輸入學(xué)號(hào): ");
        int id = scanner.nextInt();
        System.out.println("請(qǐng)輸入姓名: ");
        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語句對(duì)應(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();

對(duì)應(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("請(qǐng)輸入學(xué)號(hào): ");
        int id = scanner.nextInt();
        System.out.println("請(qǐng)輸入姓名: ");
        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對(duì)象它被稱為結(jié)果集,它代表符合SQL語句條件的所有行,并且它通過一套getXXX方法提供了對(duì)這些行中數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(9)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(9)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • java中Optional的使用詳細(xì)解析

    java中Optional的使用詳細(xì)解析

    這篇文章主要介紹了java新特性之Optional的詳細(xì)解析,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Spring Boot Maven插件使用詳解

    Spring Boot Maven插件使用詳解

    這篇文章主要為大家詳細(xì)介紹了Spring Boot Maven插件使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 一篇文章搞定Struts2的類型轉(zhuǎn)換

    一篇文章搞定Struts2的類型轉(zhuǎn)換

    這篇文章主要介紹了關(guān)于Struts2類型轉(zhuǎn)換的相關(guān)資料,文中主要介紹了Struts2的類型轉(zhuǎn)換器和自定義類型轉(zhuǎn)換器的實(shí)現(xiàn),有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Java優(yōu)先隊(duì)列?priority?queue

    Java優(yōu)先隊(duì)列?priority?queue

    本文主要介紹了Java優(yōu)先隊(duì)列?priority?queue,優(yōu)先隊(duì)列是一種特殊的數(shù)據(jù)結(jié)構(gòu)隊(duì)列中每一個(gè)元素都被分配到一個(gè)優(yōu)先權(quán)值,出隊(duì)順序按照優(yōu)先權(quán)值來劃分。一般有兩種出隊(duì)順序高優(yōu)先權(quán)出隊(duì)或低優(yōu)先權(quán)出隊(duì),想了解具體內(nèi)容的小伙伴可以參考下文內(nèi)容,希望對(duì)你有所幫助
    2021-12-12
  • 解決maven父子工程install的時(shí)候排除某些子模塊,讓子模塊不install問題

    解決maven父子工程install的時(shí)候排除某些子模塊,讓子模塊不install問題

    在Maven父子工程中,如果希望某個(gè)子模塊不被安裝到本地倉庫,可以在該子模塊的`pom.xml`文件中添加以下配置: ```xml ... org.apache.maven.plugins maven-install-plugin 2.5.2 true
    2024-12-12
  • Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(共享模式)

    Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(共享模式)

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式

    SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式

    這篇文章主要介紹了SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java中管理資源的引用隊(duì)列相關(guān)原理解析

    Java中管理資源的引用隊(duì)列相關(guān)原理解析

    這篇文章主要介紹了Java中管理資源的引用隊(duì)列相關(guān)原理解析,涉及到Java的垃圾回收機(jī)制方面的知識(shí),需要的朋友可以參考下
    2015-12-12
  • Java通過SSM完成水果商城批發(fā)平臺(tái)流程

    Java通過SSM完成水果商城批發(fā)平臺(tái)流程

    這是一個(gè)使用了java+SSM開發(fā)的網(wǎng)上水果商城批發(fā)平臺(tái),是一個(gè)實(shí)戰(zhàn)小練習(xí),具有水果商城批發(fā)該有的所有功能,感興趣的朋友快來看看吧
    2022-06-06

最新評(píng)論