惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Security @ Cisco Blogs
The Last Watchdog
The Last Watchdog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
B
Blog RSS Feed
小众软件
小众软件
N
News | PayPal Newsroom
Attack and Defense Labs
Attack and Defense Labs
Microsoft Azure Blog
Microsoft Azure Blog
V
Vulnerabilities – Threatpost
The Hacker News
The Hacker News
T
Tor Project blog
A
Arctic Wolf
Jina AI
Jina AI
Hacker News: Ask HN
Hacker News: Ask HN
F
Fortinet All Blogs
Cloudbric
Cloudbric
S
Secure Thoughts
L
LINUX DO - 热门话题
博客园 - 司徒正美
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security Affairs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
P
Privacy International News Feed
AWS News Blog
AWS News Blog
S
Securelist
TaoSecurity Blog
TaoSecurity Blog
AI
AI
O
OpenAI News
C
Cyber Attacks, Cyber Crime and Cyber Security
K
Kaspersky official blog
T
The Blog of Author Tim Ferriss
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
T
Tenable Blog
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
S
SegmentFault 最新的问题

博客园 - Star.Stroll

【Chrome扩展】Reload image 重载图片 [原创]RegularJS [原创]虚拟化技术真的能让企业降低成本吗? [原创]纯Java获得本地MAC地址 [原创]GCC动态链接库的编译与使用简例 [原创]Cygwin的中文支持(解决乱码) [原创]程序员日志:自制随笔程序 [原创]程序员日志:程序员的快捷方式 [原创]Java Socket(套接字)自学笔记1 [原创]透明的DIV提示框(兼容IE与Firefox) 深入HashCode方法 JavaScript代码实例:拖动对象 Drag Object (兼容:IE、Firefox、Opera ... ) Tomcat中用web.xml控制Web应用详解(2) Tomcat中用web.xml控制Web应用详解(1) [原创]一个简单例子解释 Java 工厂模式 [原创]Object.clone()的作用与用法 Java 范型编程 Singleton模式(单态模式) Builder模式
java.sql.ResultSet 新增、更新、刪除資料
Star.Stroll · 2008-02-01 · via 博客园 - Star.Stroll

    之前要進行新增、更新或刪除資料,都必須要撰寫SQL,然後使用 executeUpdate()來執SQL,將SQL寫在executeUpdate ()之中,其實是一件麻煩又容易出錯的動作,如果您只是想要針對查詢到的資料進行一些簡單的新增、更新或刪除資料,您可以藉由ResultSet的一些方法來執行,而不一定要撰寫SQL並執行。

    想要使用ResultSet直接進行新增、更新或刪除資料,在建立Statement時必須在createStatement()上指定ResultSet.TYPE_SCROLL_SENSITIVE(或ResultSet.TYPE_SCROLL_INSENSITIVE,如果不想取得更新後的資料的話)與ResultSet.CONCUR_UPDATABLE,例如:

Statement stmt =  conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 
                            ResultSet.CONCUR_UPDATABLE);

    假如我們想要針對查詢到的資料進行更新的動作,我們先移動游標至想要更新的資料位置,然後使用updateXXX()等對應的方法即可,最後記得使用 updateRow()讓更新生效,例如:

ResultSet result = stmt.executeQuery(
            
"SELECT * FROM message WHERE name='caterpillar'");
 
result.last();
result.updateString(
"name""justin");
result.updateString(
"email""justin@mail.com");
 
result.updateRow();

    使用updateXXX()等方法之後,並不會馬上對資料庫生效,而必須執行完updateRow()方法才會對資料庫進行操作,如果在 updateRow()前想要取消之前的updateXXX()方法,則可以使用cancelRowUpdates()方法取消。

    如果想要新增資料,則先使用moveToInsertRow()移至新增資料處,執行相對的updateXXX()方法,然後再執行insertRow ()即可新增資料,例如:

ResultSet result = stmt.executeQuery(
            
"SELECT * FROM message WHERE name='caterpillar'");
 
result.moveToInsertRow();
result.updateString(
"name""caterpillar");
result.updateString(
"email""caterpillar@mail.com");
result.updateString(
"subject""test");
result.updateString(
"memo""This is a test!");
 
result.insertRow();

    如果想要刪除查詢到的某筆資料,則可以將游標移至該筆資料,然後執行deleteRow()方法即可:

ResultSet result = stmt.executeQuery(
            
"SELECT * FROM message WHERE name='caterpillar'");
 
result.last();
result.deleteRow();