最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java增刪改查數(shù)據(jù)庫的操作方法

 更新時間:2024年12月17日 16:34:24   作者:喵果森森  
這篇文章主要介紹了使用Java增刪改查數(shù)據(jù)庫的操作方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

前言

既然連接數(shù)據(jù)庫都可以通過java語言實現(xiàn),那么通過java語言對數(shù)據(jù)庫進行增刪改查的操作自然是順理成章的事情了。

一、PrepareStatement類是什么?

PrepareStatement類是Java JDBC API中的一個類,用于執(zhí)行預(yù)編譯的SQL語句。這個類實現(xiàn)java語言增刪改查數(shù)據(jù)庫的功能。它是Statement的子接口,提供了更高級別和更靈活的功能。(所以在編譯SQL語句的時候,不要使用Statement類,直接使用它的子接口吧?。?/p>

通過使用PrepareStatement類,可以先將SQL語句發(fā)送到數(shù)據(jù)庫進行編譯,然后可以重復(fù)執(zhí)行該語句,并且可以使用參數(shù)化查詢和批處理等高級功能。

PrepareStatement類可以防止SQL注入攻擊,提高性能,并且可以方便地處理不同類型的數(shù)據(jù)。

SQL注入攻擊,以statement類為例,當使用Statement對象執(zhí)行動態(tài)拼接SQL語句時,如果不對用戶輸入進行正確的過濾和轉(zhuǎn)義,攻擊者可以通過構(gòu)造惡意的“密碼"進行輸入來修改或執(zhí)行未經(jīng)授權(quán)的SQL語句。(利用轉(zhuǎn)義漏洞,繞過了賬號密碼,直接訪問并可以攻擊數(shù)據(jù))

PrepareStatement的構(gòu)造方法:

connection.PrepareStatement(String sql);
//創(chuàng)建一個新的PrepareStatement對象,以指定的SQL語句初始化。
connection.PrepareStatement(String sql, int autoGeneratedKeys);
//創(chuàng)建一個新的PrepareStatement對象,以指定的SQL語句和生成的鍵標志初始化。
connection.PrepareStatement(String sql, int[] columnIndexes);
//創(chuàng)建一個新的PrepareStatement對象,以指定的SQL語句和列索引標志初始化。
connection.PrepareStatement(String sql, String[] columnNames);
//創(chuàng)建一個新的PrepareStatement對象,以指定的SQL語句和列名標志初始化。
 

PrepareStatement類是沒有直接的構(gòu)造方法的,但是可以通過Connection對象調(diào)用PrepareStatement()方法來創(chuàng)建自己的對象。第一個方法是最經(jīng)常使用的,其他的想忽略也行。

PrepareStatement類的常用方法
方法功能描述返回值
setNull(int parameterIndex, int sqlType)將指定的參數(shù)設(shè)置為SQL NULLvoid
setBoolean(int parameterIndex, boolean x)將指定參數(shù)設(shè)置為給定的Java布爾值void
setByte(int parameterIndex, byte x)將指定參數(shù)設(shè)置為給定的Java字節(jié)值void
setShort(int parameterIndex, short x)將指定參數(shù)設(shè)置為給定的Java short值void
setInt(int parameterIndex, int x)將指定參數(shù)設(shè)置為給定的Java int值void
setLong(int parameterIndex, long x)將指定參數(shù)設(shè)置為給定的Java long值void
setFloat(int parameterIndex, float x)將指定參數(shù)設(shè)置為給定的Java float值void
setDouble(int parameterIndex, double x)將指定參數(shù)設(shè)置為給定的Java double值void
setBigDecimal(int parameterIndex, BigDecimal x)將指定參數(shù)設(shè)置為給定的Java BigDecimal值void
setString(int parameterIndex, String x)將指定參數(shù)設(shè)置為給定的Java String值void
setBytes(int parameterIndex, byte[] x)將指定參數(shù)設(shè)置為給定的Java 字節(jié)數(shù)組void
setDate(int parameterIndex, Date x)將指定參數(shù)設(shè)置為給定的SQL date值void
setTime(int parameterIndex, Time x)將指定的參數(shù)設(shè)置為給定的SQL時間戳值void
setObject(int parameterIndex, Object x)將指定參數(shù)設(shè)置為給定的Java Object對象void
executeQuery()執(zhí)行這個PreparedStatement對象中的SQL查詢,并返回查詢生成的ResultSet對象ResultSet
executeUpdate()執(zhí)行這個PreparedStatement對象中的SQL語句(可能是INSERT、UPDATE或DELETE語句),并返回受影響行的計數(shù)int
execute()執(zhí)行這個PreparedStatement對象中的SQL語句,它可能返回多個結(jié)果boolean
clearParameters()清除PreparedStatement對象中的當前參數(shù)值void
setArray(int parameterIndex, Array x)將指定參數(shù)設(shè)置為給定的SQL Array對象void
setBlob(int parameterIndex, Blob x)將指定參數(shù)設(shè)置為給定的SQL Blob對象void
setClob(int parameterIndex, Clob x)將指定參數(shù)設(shè)置為給定的SQL Clob對象void

使用以上PrepareStatement的方法就可以實現(xiàn)對數(shù)據(jù)庫的增刪改查的功能了。

PrepareStatement類比Statement類多一個預(yù)處理的功能,需要使用到通配符" ? "(也正是該功能減輕了SQL注入攻擊)

所以,PrepareStatement實例化時的String數(shù)據(jù)的SQL語句時不完整的,需要將通配符替換掉,才能進行使用,這和格式化輸出語句的道理一樣。

在上面常用方法的表格中,最常見的是set()方法,盡管數(shù)據(jù)類型不同,但第一個參數(shù):int parameterIndex 該參數(shù)都是指在String字符串中編寫SQL語句的第幾個通配符,然后這個在SQL語句中的問號( ? )可以被你設(shè)置的第二個數(shù)據(jù)類型替代,SQL語句被補全了,可以進行下一步執(zhí)行運行的操作了。

二、實操展示

以下的所有操作都建立在連接好數(shù)據(jù)庫之后,對連接框架的代碼進行了省略。

增刪改查的操作步驟大致都是("查"需要循環(huán)輸出語句反饋到控制臺):

第一步,創(chuàng)建String對象,編寫SQL語句。

第二步,利用connection對象調(diào)用方法創(chuàng)建PrepareStatement對象。

第三步,使用PrepareStatement類的set()方法,補全SQL語句中的通配符。

最后一步,調(diào)用PrepareStatement類的executeUpdate()方法執(zhí)行該SQL語句。

executeUpdate()方法執(zhí)行后,Java代碼會將SQL語句發(fā)送給MySQL數(shù)據(jù)庫,并執(zhí)行相應(yīng)的操作,如插入、更新或刪除數(shù)據(jù)。執(zhí)行完畢后,MySQL數(shù)據(jù)庫會返回操作的結(jié)果,Java代碼可以通過executeUpdate()方法獲取到受影響的行數(shù)。

1.增

實操展示:

這是數(shù)據(jù)庫表單原本的樣子:

這個table只有三行,需求:添加一個id是104,name是小浩的數(shù)據(jù)。

主要代碼:

String sql = "INSERT INTO table_name (id, name) VALUES (?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, 104);
statement.setString(2, "小浩");
statement.executeUpdate();

運行結(jié)果:

如上圖所示,刷新Workbench,實時顯示出了數(shù)據(jù)庫內(nèi)容的更新。

2.刪

實操展示:

這是數(shù)據(jù)庫表單原本的樣子:

需求:刪除一個id是103,name是小張的數(shù)據(jù)。

主要代碼:

String sql = "DELETE FROM test_table WHERE id = ? AND name = ?";
PreparedStatement statement = con.prepareStatement(sql);
statement.setInt(1, 103);
statement.setString(2, "小張");
statement.executeUpdate();

運行結(jié)果:

如上圖所示,數(shù)據(jù)庫表單的id=103,name=小張的這一串數(shù)據(jù)已被刪除。

3.改

實操展示:

這是數(shù)據(jù)庫表單原本的樣子:

需求:將id=104 name=小王的這一串數(shù)據(jù)里,id值修改為103。

主要代碼:

String sql = "UPDATE test_table SET id= ? WHERE id = ? ";
PreparedStatement statement = con.prepareStatement(sql);
statement.setInt(1, 103);
statement.setInt(2, 104);
statement.executeUpdate();

運行結(jié)果:

如上圖所示,數(shù)據(jù)庫中小浩的id由104更改為了103。

4.查

這是數(shù)據(jù)庫表單原本的樣子:

需求:查詢id為101的用戶的name值是什么。

主要代碼:

String sql = "SELECT name FROM test_table WHERE id = ? ";
PreparedStatement statement = con.prepareStatement(sql);
statement.setInt(1, 101);
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
    // 處理查詢結(jié)果
    String value1 = resultSet.getString("name");
    System.out.println("查詢結(jié)果:id值為101的用戶名稱是 "+value1);
}

運行結(jié)果:

對比數(shù)據(jù)庫的信息:

如上面兩張圖顯示,通過PrepareStatement類可以輕松實現(xiàn)java后端與數(shù)據(jù)庫之間的互通。

總結(jié)

以上就是使用java的PrepareStatement類對數(shù)據(jù)庫進行增刪改查的操作,本文初步介紹了java的使用,沒有寫關(guān)于SQL語句之類的數(shù)據(jù)庫知識,有補充或指正的地方,歡迎在評論區(qū)中留言。

到此這篇關(guān)于使用Java增刪改查數(shù)據(jù)庫的操作方法的文章就介紹到這了,更多相關(guān)Java增刪改查數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java將圖片至暗的實現(xiàn)方法

    java將圖片至暗的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava將圖片至暗的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Spring整合Weblogic jms實例詳解

    Spring整合Weblogic jms實例詳解

    這篇文章主要介紹了Spring整合Weblogic jms實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-10-10
  • Java maven詳細介紹

    Java maven詳細介紹

    今天給大家復(fù)習一下Java基礎(chǔ)知識,簡單介紹Maven,文中有非常詳細的解釋,對Java初學(xué)者很有幫助喲,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • SpringBoot中的WebSocketSession原理詳解

    SpringBoot中的WebSocketSession原理詳解

    這篇文章主要介紹了SpringBoot中的WebSocketSession原理詳解,傳統(tǒng)的?HTTP?協(xié)議是無法支持實時通信的,因為它是一種無狀態(tài)協(xié)議,每次請求都是獨立的,無法保持連接。為了解決這個問題,WebSocket?協(xié)議被引入,需要的朋友可以參考下
    2023-07-07
  • 使用java為pdf添加書簽的方法(pdf書簽制作)

    使用java為pdf添加書簽的方法(pdf書簽制作)

    下載一些pdf格式的電子書沒有書簽,用JAVA寫了一個小工具,將特定格式的文本解析成為書簽,然后保存到pdf格式中
    2014-02-02
  • Java實現(xiàn)帶緩沖的輸入輸出流

    Java實現(xiàn)帶緩沖的輸入輸出流

    本文詳細講解了Java實現(xiàn)帶緩沖的輸入輸出流,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-04-04
  • springboot如何通過session實現(xiàn)單點登入詳解

    springboot如何通過session實現(xiàn)單點登入詳解

    單點登錄(SSO)的定義是在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于springboot如何通過session實現(xiàn)單點登入的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • 使用java swing實現(xiàn)qq登錄界面示例分享

    使用java swing實現(xiàn)qq登錄界面示例分享

    這篇文章主要介紹了使用java swing實現(xiàn)qq登錄界面示例,需要的朋友可以參考下
    2014-04-04
  • java計算兩個時間相差天數(shù)的方法匯總

    java計算兩個時間相差天數(shù)的方法匯總

    這篇文章主要介紹了java計算兩個時間相差天數(shù)的方法,感興趣的小伙伴們可以參考一下
    2015-11-11
  • Java Spring的@Async的使用及注意事項示例總結(jié)

    Java Spring的@Async的使用及注意事項示例總結(jié)

    這篇文章主要介紹了Java Spring的@Async使用及注意事項的相關(guān)資料,Spring框架中的@Async注解用于標記方法在單獨線程中異步執(zhí)行,適用于耗時操作,提高性能和響應(yīng)速度,需要的朋友可以參考下
    2025-05-05

最新評論

尼玛县| 贺州市| 墨玉县| 北碚区| 钟祥市| 如东县| 常山县| 色达县| 全椒县| 宜春市| 湖州市| 微山县| 巴林左旗| 张家港市| 汤阴县| 万安县| 汕尾市| 阳城县| 林芝县| 罗甸县| 康马县| 济宁市| 朝阳市| 习水县| 聂拉木县| 固镇县| 砚山县| 苏州市| 华容县| 桂东县| 嘉义县| 桐梓县| 平谷区| 沈阳市| 资兴市| 铜梁县| 武威市| 民权县| 汽车| 方城县| 高碑店市|