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

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

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

前言

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

一、PrepareStatement類是什么?

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

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

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

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

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

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

PrepareStatement類是沒有直接的構(gòu)造方法的,但是可以通過Connection對(duì)象調(diào)用PrepareStatement()方法來創(chuàng)建自己的對(duì)象。第一個(gè)方法是最經(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時(shí)間戳值void
setObject(int parameterIndex, Object x)將指定參數(shù)設(shè)置為給定的Java Object對(duì)象void
executeQuery()執(zhí)行這個(gè)PreparedStatement對(duì)象中的SQL查詢,并返回查詢生成的ResultSet對(duì)象ResultSet
executeUpdate()執(zhí)行這個(gè)PreparedStatement對(duì)象中的SQL語句(可能是INSERT、UPDATE或DELETE語句),并返回受影響行的計(jì)數(shù)int
execute()執(zhí)行這個(gè)PreparedStatement對(duì)象中的SQL語句,它可能返回多個(gè)結(jié)果boolean
clearParameters()清除PreparedStatement對(duì)象中的當(dāng)前參數(shù)值void
setArray(int parameterIndex, Array x)將指定參數(shù)設(shè)置為給定的SQL Array對(duì)象void
setBlob(int parameterIndex, Blob x)將指定參數(shù)設(shè)置為給定的SQL Blob對(duì)象void
setClob(int parameterIndex, Clob x)將指定參數(shù)設(shè)置為給定的SQL Clob對(duì)象void

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

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

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

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

二、實(shí)操展示

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

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

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

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

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

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

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

1.增

實(shí)操展示:

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

這個(gè)table只有三行,需求:添加一個(gè)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();

運(yùn)行結(jié)果:

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

2.刪

實(shí)操展示:

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

需求:刪除一個(gè)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();

運(yùn)行結(jié)果:

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

3.改

實(shí)操展示:

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

需求:將id=104 name=小王的這一串?dāng)?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();

運(yùn)行結(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);
}

運(yùn)行結(jié)果:

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

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

總結(jié)

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

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

相關(guān)文章

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

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

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

    Spring整合Weblogic jms實(shí)例詳解

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

    Java maven詳細(xì)介紹

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

    SpringBoot中的WebSocketSession原理詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

兖州市| 北宁市| 新河县| 淮南市| 苗栗市| 收藏| 淮滨县| 红河县| 土默特左旗| 罗平县| 石河子市| 多伦县| 扶绥县| 龙门县| 黔南| 松江区| 台南市| 红原县| 庆云县| 宣城市| 东乌珠穆沁旗| 舟山市| 格尔木市| 沙湾县| 乐平市| 静乐县| 新宁县| 沂源县| 淳化县| 逊克县| 南岸区| 息烽县| 江永县| 泽州县| 青冈县| 嵊泗县| 招远市| 汝南县| 宜良县| 噶尔县| 石嘴山市|