JDBC中ResultSet的修改
2008-02-23 09:48:46来源:互联网 阅读 ()
JDBC的ResultSet对象,一般用法中update和select是由独立的Statement来完成。
尝试了一下直接update结果集。数据库Oracle9i,驱动classes12.jar
Connection con = ds.buildConnection();
PreparedStatement smt = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = smt.executeQuery();
while(rs.next()){
rs.updateString("name","test"); rs.updateRow();
}
分别使用不同的sql:
String sql = "select a.name,b.id from user a,user_employee b where a.id = b.user_id";
这样的做法会抛出异常,rs这个时候是只读的。
String sql = "select a.name from user a";
单表操作的时候没有问题。
String sql = "select * from user"
用*的方式有问题,rs只读。
再尝试一种方式:
String sql = "select id id1 mycol,name from user";
修改一下update语句:
rs.updateInt("aa",1);
这个时候,rs仍然保持是updatable,但是这句话却会引起一个异常:
Java.sql.SQLException: ORA-01733: 此处不允许虚拟列
at oracle.jdbc.dbAccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
。。。。。。
当然这一列通过dbmeta来获取也是readonly的。
总结一下,基本上,是单表的,非虚列,非通配符的statement可以被修改,而其他则不行。
只在JDK文档中找到了一段话是和ResultSet相关的:
A default ResultSet
object is not updatable and has a cursor that moves forward only. Thus, you can iterate through it only once and only from the first row to the last row. It is possible to produce ResultSet
objects that are scrollable and/or updatable. The following code fragment, in which con
is a valid Connection
object, illustrates how to make a result set that is scrollable and insensitive to updates by others, and that is updatable. See ResultSet
fields for other options.
Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2"); // rs will be scrollable, will not show changes made by others, // and will be updatable
没有找到更加具体全面的说明,有篇文章
(http://www.zhuoda.org/blog3/article.jsp?blogid=1681&id=1833)说DB2 Everyplace不支
持CONCUR_UPDATABLE类型的结果集,还有很早以前用Sybase的时候,sybase的游标类型支持也是有些
问题的,不知道哪里能找到相关方面的比较全面的文章,有谁知道,希望留在我的blog上,先谢了。
上一篇: JTable中怎样获取鼠标所在位置的行数
下一篇: 用sun公司的NetBeans开发J2ME程序
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:java 构造函数的执行过程
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash