Java中executeQuery()和executeUpdate()的區(qū)別及說明
一、概述
executeQuery()和executeUpdate()都是JDBC的方法,用于執(zhí)行SQL語句。
二、區(qū)別
1.executeQuery()方法用于執(zhí)行select查詢語句,它返回一個(gè)ResultSet對(duì)象,該對(duì)象包含與查詢語句匹配的所有行。
ResultSet對(duì)象可以用于遍歷和訪問查詢結(jié)果。
例如:
static ResultSet rs=null;
static PreparedStatement pst=null;
//------------遍歷學(xué)生數(shù)據(jù)庫
public void shouMysql() {
String sql="select * from student ";
try {
pst = con.prepareStatement(sql);
System.out.println("MySQL代碼執(zhí)行成功");
rs = pst.executeQuery();//pst的executeQuery方法執(zhí)行查詢返回結(jié)果集存到rs ,返回值是指針指向開始首地址。
while(rs.next()) {
System.out.print("賬號(hào):"+rs.getString("code")+" \t");
System.out.print("姓名:"+rs.getString("name")+" \t");
System.out.print("密碼:"+rs.getString("pwd")+" \t");
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.executeUpdate()方法用于執(zhí)行INSERT、UPDATE和DELETE等修改數(shù)據(jù)庫的操作語句,它返回一個(gè)整數(shù)值,表示受影響的行數(shù)。
例如:
static PreparedStatement pst=null;
//刪除數(shù)據(jù) 根據(jù)code,自己不可以刪除自己
public void DeletMysql() {
Scanner sc=new Scanner(System.in);
System.out.print("請(qǐng)輸入要?jiǎng)h除的賬號(hào):");
String code=sc.nextLine();
if(code!=id) {
String sql="delete from student where code = '" + code + "'";
try {
pst = con.prepareStatement(sql);//創(chuàng)建pst對(duì)象
pst.executeUpdate();//修改數(shù)據(jù)庫表,把數(shù)據(jù)寫入數(shù)據(jù)庫
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("數(shù)據(jù)沒有刪除成功,可能原因sql語句,或者查詢修改數(shù)據(jù)庫都要用executeUpdate();");
}//修改數(shù)據(jù)庫表,把數(shù)據(jù)寫入數(shù)據(jù)庫
}else {
System.out.println("不可以刪除自身請(qǐng)重寫輸入要?jiǎng)h除賬號(hào)");
DeletMysql();
}
}
需要注意的是:
executeUpdate()方法不能用于執(zhí)行SELECT查詢語句,如果嘗試執(zhí)行SELECT語句,將會(huì)拋出SQLException異常。
同樣地,executeQuery()方法也不能用于執(zhí)行INSERT、UPDATE和DELETE等修改數(shù)據(jù)庫的操作語句。
區(qū)別總結(jié):
- 改動(dòng)數(shù)據(jù)庫:executeUpdate()
- 只是看看 :executeQuery()
三、注意事項(xiàng)
1. 使用之前需要先創(chuàng)建一個(gè)Statement對(duì)象或PreparedStatement對(duì)象,并將SQL語句作為參數(shù)傳遞給它們。
2. SQL語句的正確性非常重要。確保SQL語句語法正確,并且參數(shù)值正確綁定。
3. 在執(zhí)行executeQuery()方法時(shí),只能執(zhí)行SELECT查詢語句,不能執(zhí)行INSERT、UPDATE和DELETE等修改操作語句。
4. 在執(zhí)行executeUpdate()方法時(shí),只能執(zhí)行INSERT、UPDATE和DELETE等修改操作語句,不能執(zhí)行SELECT查詢語句。
5. 需要手動(dòng)關(guān)閉ResultSet對(duì)象和Statement對(duì)象,以釋放資源,可以使用try-with-resources語句或在finally塊中關(guān)閉。
6. 對(duì)于executeQuery()方法返回的ResultSet對(duì)象,可以使用ResultSet對(duì)象的方法遍歷和訪問查詢結(jié)果。
7. 對(duì)于executeUpdate()方法返回的整數(shù)值,表示受影響的行數(shù),可以用于檢查修改操作的結(jié)果。
8. 可以使用PreparedStatement對(duì)象來執(zhí)行帶有占位符的SQL語句,通過設(shè)置相應(yīng)的參數(shù)值來防止SQL注入攻擊。
9. 在執(zhí)行executeUpdate()方法時(shí),如果沒有受影響的行數(shù),可能是因?yàn)閳?zhí)行的SQL語句沒有匹配的數(shù)據(jù)或語句寫錯(cuò)了。
10. 需要確保數(shù)據(jù)庫連接是有效的,并且具有適當(dāng)?shù)臋?quán)限來執(zhí)行SQL語句。
遵循這些注意事項(xiàng)可以幫助避免一些常見的錯(cuò)誤和問題,并確保正確、安全地使用executeQuery()和executeUpdate()方法。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java結(jié)合Vue項(xiàng)目打包并進(jìn)行服務(wù)器部署
本文主要介紹了Java結(jié)合Vue項(xiàng)目打包并進(jìn)行服務(wù)器部署,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Java行為型設(shè)計(jì)模式之外觀設(shè)計(jì)模式詳解
外觀模式為多個(gè)復(fù)雜的子系統(tǒng),提供了一個(gè)一致的界面,使得調(diào)用端只和這個(gè)接口發(fā)生調(diào)用,而無須關(guān)系這個(gè)子系統(tǒng)內(nèi)部的細(xì)節(jié)。本文將通過示例詳細(xì)為大家講解一下外觀模式,需要的可以參考一下2022-11-11
JAVA進(jìn)階之HashMap底層實(shí)現(xiàn)解析
Hashmap是java面試中經(jīng)常遇到的面試題,大部分都會(huì)問其底層原理與實(shí)現(xiàn),為了能夠溫故而知新,特地寫了這篇文章,以便時(shí)時(shí)學(xué)習(xí)2021-11-11
一文教你學(xué)會(huì)如何使用MyBatisPlus
本篇文章,我們通過 MyBatis Plus 來對(duì)一張表進(jìn)行 CRUD 操作,來看看是如何簡化我們開發(fā)的,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-05-05
SpringBoot Security安裝配置及Thymeleaf整合
這篇文章主要介紹了SpringBoot Security安裝配置及Thymeleaf整合,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
nacos使用占位符${}進(jìn)行參數(shù)配置的方法
這篇文章主要介紹了nacos如何使用占位符${}進(jìn)行參數(shù)配置,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
SpringBoot結(jié)合WebSocket實(shí)現(xiàn)聊天功能
本文介紹了如何使用SpringBoot和WebSocket實(shí)現(xiàn)一個(gè)簡單的聊天功能,包括導(dǎo)入依賴、配置類、創(chuàng)建消息實(shí)體、指定ServerEndpoint、創(chuàng)建客戶端等步驟,通過具體示例,演示了如何發(fā)送個(gè)人消息和群發(fā)消息,實(shí)現(xiàn)了基本的聊天功能,適合需要在項(xiàng)目中實(shí)現(xiàn)實(shí)時(shí)通訊功能的開發(fā)者參考2024-11-11
基于SpringAOP+Caffeine實(shí)現(xiàn)本地緩存的實(shí)例代碼
公司想對(duì)一些不經(jīng)常變動(dòng)的數(shù)據(jù)做一些本地緩存,我們使用AOP+Caffeine來實(shí)現(xiàn),所以本文給大家介紹了2024-03-03
基于SpringAOP+Caffeine實(shí)現(xiàn)本地緩存的實(shí)例,文中有詳細(xì)的代碼供大家參考,需要的朋友可以參考下

