日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle查询可更新结果集,jdbc 可更新结果集

發布時間:2025/3/12 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle查询可更新结果集,jdbc 可更新结果集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jdbc中ResultSet在jdk 5.0以后默認都是可滾動的,不可更新的。可滾動的意思是我們可以調用absolute(),previous(), ?first()等操作來更新結果集中的指針位置。

當我們需要結果集可更新的時候,可以設置它的值為ResultSet.CONCUR_UPDATABLE,默認是ResultSet.CONCUR_READ_ONLY。

當我們在連接的是oracle數據庫時,如果查詢的sql語句是select * from 表名的話,那么oracle默認我們是以只讀方式訪問表,所以我們程序設置為可更新的結果集,也是沒有任何用處的,需要select 字段名..... from 表名,才能調用可更新的結果集。

下面我們演示 更新結果集的操作,把表的sname列,更新為“姓名”+i。

package com.shizhan.main;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.shizhan.util.DatabaseUtil;

public class TestResult {

/**

* @param args

*/

public static void main(String[] args) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

//當操作oracle數據庫的時候,如果設置結果集是可更新的,則sql語句設置為select *from 表名,是無法更新的,需要設置select

//字段1,字段2.。。from表名

String sql ="select sno,sname from student";

try {

conn = DatabaseUtil.getConnection();

//ResultSet.TYPE_SCROLL_INSENSITIVE結果集可滾動

//ResultSet.CONCUR_UPDATABLE結果集可更新

ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_UPDATABLE);

rs = ps.executeQuery();

//指針移動到最后

rs.last();

//返回當前的行號

int rownum = rs.getRow();

for(int i=rownum;i>0;i--)

{

//指針移動到第i條記錄

rs.absolute(i);

System.out.println("sno:"+rs.getInt(1)

+"\t"+"sname"+rs.getString(2));

//修改第二列的值

rs.updateString(2,"姓名"+i);

//提交修改,更新列

rs.updateRow();

}

} catch (SQLException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}finally{

DatabaseUtil.close(rs);

DatabaseUtil.close(ps);

DatabaseUtil.close(conn);

}

}

}

package com.shizhan.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DatabaseUtil {

static Connection connection = null;

static String driver = "oracle.jdbc.driver.OracleDriver";

static String url = "jdbc:oracle:thin:localhost:1521:orcl";

static String username ="scott";

static String password ="tiger";

public static Connection getConnection() throws Exception

{

Class.forName(driver);

connection = DriverManager.getConnection(url,username,password);

return connection;

}

public static void close(Connection conn) {//關閉連接對象

if(conn != null) {//如果conn連接對象不為空

try {

conn.close();//關閉conn連接對象對象

} catch (SQLException e) {

e.printStackTrace();

}

}

}

public static void close(PreparedStatement pstmt) {//關閉預處理對象

if(pstmt != null) {//如果pstmt預處理對象不為空

try {

pstmt.close();//關閉pstmt預處理對象

} catch (SQLException e) {

e.printStackTrace();

}

}

}

public static void close(Statement pstmt) {//關閉預處理對象

if(pstmt != null) {//如果pstmt預處理對象不為空

try {

pstmt.close();//關閉pstmt預處理對象

} catch (SQLException e) {

e.printStackTrace();

}

}

}

public static void close(ResultSet rs) {//關閉結果集對象

if(rs != null) {//如果rs結果集對象不為null

try {

rs.close();//關閉rs結果集對象

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

總結

以上是生活随笔為你收集整理的oracle查询可更新结果集,jdbc 可更新结果集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。