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();

}

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 28000错误码,Oracle数据库 ORA-28000 错误处理方式

Oracle数据库ORA-28000错误处理方式ORA-28000:the account is locked-的解决办法ORA-28000:the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob,查看us…

为什么选择matlab,matlab选择语句

matlab程序if语句用法MATLAB中我们常常用到条件判断语句结构,通过实例介绍这个结构的用法: 1、if。..end结构,运行下面的句子,此条件语句是判断5是否大于3,如果大于3,就将1赋值给; 2、if。.else…

崔华 oracle简历,2013数据库大会:崔华-基于Oracle的SQL优化案例分析

2013数据库大会:崔华-基于Oracle的SQL优化案例分析崔华的新书即将出版,其数据库大会上的演讲也非常精彩,他的新书十分值得期待。2013年中国数据库技术大会第二天的"Oracle架构与优化"专场中,来自中航信资深Oracle数据库工程师崔华为…

模板消息 php实例,PHP微信模板消息操作示例

本文实例讲述了PHP微信模板消息操作方法。分享给大家供大家参考,具体如下:微信SDK:class Oauth {//获得全局access_tokenpublic function get_token(){//如果已经存在直接返回access_token//if($_SESSION[access_token] && $_SESSION…

非阻塞 php,PHP异步非阻塞之路

需求一个简单的需求,提交大量数据到远程服务器,此时并不需要等待返回。另一个需求,获取API数据,同时查询数据库,并行处理,加快响应速度。配置问题set_time_limitignore_user_abortfastcgi_finish_request只…

linux进程监控自动重启,Linux监控进程,进程关闭自动重启方案

Linux监控进程,进程关闭自动重启方案corntabshell脚本检测进程这个方案简单不用额外安装软件。缺点是存在间隔,corntab设置1秒执行一次shell脚本也是存在间隔的#!/bin/bash#author smallForest#email 1032817724qq.comproc_name"xiaofei.php" …

https脚本调linux执行器,linux平台下一键配置网站https

部署过SSL证书的人都知道,申请和部署一张SSL证书是相当繁琐而漫长的过程,枯燥无味的部署指南、非常容易出错的命令、复杂的编辑配置等等,在linux平台下,更加痛不欲生。LZ试用了SSL证书自动配置工具,支持linux平台下自动…

linux内核是否支持nfs,嵌入式命令:查看设备是否支持nfs

1:查看设备是否支持nfs功能命令: cat /proc/filesystems若有一行为 nodev nfs,则开发板Linux内核支持NFS,反之需要配置内核同样方法查看Linux主机内核是否支持NFS挂载文件系统的时候遇到:[rootHZCTC-hadoop-0-81 hadoo…

linux6同步时间,centos 6.x 同步网络时间

1. linux时间介绍Linux的时间分为System Clock(系统时间)和Real Time Clock (硬件时间,简称RTC)。系统时间:指当前Linux Kernel中的时间。硬件时间:主板上有电池供电的时间。2. 手动设置时间查看系统时间的命令:date设置系统时间的…

linux6.5如何打开ftp服务,CentOs6.5上快速搭建ftp服务器

1、用root 进入系统2、使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vsftpd的版本3、使用命令rpm -e vsftpd 即可卸载ftp4、再使用rpm -qa|grep vsftpd 查看系统是否已删除ftp,若删除成功…

linux cmake安装教程,ubuntu安装Cmake

安装 CMake1、下载最新的CMake( 版本:3.4.0)wget http://www.cmake.org/files/v3.4/cmake-3.4.0-rc2-Linux-i386.tar.gz2、解压tar zxvf cmake-3.4.0-rc2-Linux-i386.tar.gz3、创建链接ln -s /usr/cmake-3.4.0-rc2-Linux-i386/bin/* /usr/bin/4、执行命令&#xff0…

linux设置静态ip后端口不能上网,Centos7设置静态IP后无法上网的解决方法

在VMWare中安装的本地虚拟机CentOS7操作系统,动态IP地址会经常变化,设置成静态IP地址后,本地局域网可以互相访问,但CentOS7系统无法访问互联网,按以下步骤解决这个问题。1、以系统管理员打开VMWare2、选择虚拟网络编辑…

linux 下nc-verilog 仿真环境搭建,Cadence NC Verilog仿真教程

这个手册将向你介绍使用 NC-Verilog simulator 和 SimVision。 本文使用的是一个用 Veilog 硬件编程语言编写的一个饮料分配机,通过这个例 子你将学会: 编译 Verilog 源文件,描述设计,在 NC-Launch(用于管理你的大型设计 的图形交…

Linux分支代码必须公开吗,linux – 当拉出不同的分支时,让“git pull”请求确认...

现在,我将重点介绍如何在执行任何拉动之前提示用户进行确认.不幸的是,因为没有预拉hook这样的东西,我认为你不能得到实际的pull命令来直接为你做这个.在我看来,你有两个选择:1 – 使用fetch然后合并(而不是pull)而不是运行git pull,运行git fetch,然后git merge或gi…

linux宽松模式,SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换...

SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换在Android的root相关的文章里经常会看到关于SElinux,Android4.3以后引进SElinux。###SELinux 的启动、关闭与查看1、并非所有的 Linux distributions 都支持 SELinux目前 SELin…

linux vim emmet,前端开发神器Emmet.vim使用笔记

Emmet.vim的安装请看:http://www.cnblogs.com/yunie-akira/p/3554065.htmlEmmet.vim简介Emmet,原来叫Zen Coding,由Sergey Chikuyonok开发,是快速开发HTML和CSS的编辑器插件。支持 Sublime Text、Notepad、Eclipse等等。官方的Emmet并不支持v…

深度Linux修改分辨率6,Deepin 修改自定义分辨率

之前我有篇文章是写显示器超频问题,当时感觉Deepin超频麻烦,折腾换成了Win10,但用了断时间后,感觉Win10真的不好用,夜览模式软件适配差,CPU占用率高,字体颗粒感强,显示器看着眼睛很累…

linux标准i o实例,9.3. 一个 I/O 端口例子

## 9.3. 一个 I/O 端口例子我们用来展示一个设备驱动内的端口 I/O 的例子代码, 操作通用的数字 I/O 端口; 这样的端口在大部分计算机系统中找到.一个数字 I/O 端口, 在它的大部分的普通的化身中, 是一个字节宽的 I/O 位置, 或者内存映射的或者端口映射的. 当你写一个值到一个输…

linux下如何bash文件,Linux系统的文件管理命令及bash的相关工作特性

一、Linux系统的文件管理命令:1 \pwd:printing working directory2 \cd:change directory cd [/PATH/TO/SOMEDIR/]可带可不带,切换回家目录;注意:bash中~表示家目录;cd ~:切换回自己的家目录&#xff…

2019浙江C语言二级答案,2019年下半年二级C语言试题及答案

机遇总是有的,如果把握不住,不要怨天忧人,原因只是自己不够优秀;不要把时间当垃圾处理,唯有珍惜光阴、努力刷二级C语言试题,才能提升生命的质量。1)若有以下语句:typedef struct S{ int g;char …