TYPE_SCROLL_INSENSITIVE is not compatible with CONCUR_UPDATABLE
There are two options when setting ResultSet to be scrollable:
- TYPE_SCROLL_INSENSITIVE - The result set is scrollable. Its cursor can move forward or backward and can be moved to a particular row or to a row whose position is relative to its current position. The result set generally does not show changes to the underlying database that are made while it is open. The membership, order, and column values of rows are typically fixed when the result set is created.
 - TYPE_SCROLL_SENSITIVE - The result set is scrollable. Its cursor can move forward or backward and can be moved to a particular row or to a row whose position is relative to its current position. The result set is sensitive to changes made while it is open. If the underlying column values are modified, the new values are visible, thus providing a dynamic view of the underlying data. The membership and ordering of rows in the result set may be fixed or not, depending on the implementation.
 
Generally, TYPE_SCROLL_INSENSITIVE is the preferred option. The data contained in the ResultSet object is fixed (a snapshot) when the object is created. Here is a sample program that shows you how to create a scrollable ResultSet and how to move the cursor backward:
/**
* DerbyScrollableResultSet.java
* Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
*/
import java.sql.*;
public class DerbyScrollableResultSet {
public static void main(String [] args) {
Connection con = null;
try {
con = DriverManager.getConnection(
"jdbc:derby://localhost/TestDB"); // Create a Statement for scrollable ResultSet
Statement sta = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY); // Catch the ResultSet object
ResultSet res = sta.executeQuery("SELECT * FROM Profile"); // Check ResultSet's scrollability
if (res.getType() == ResultSet.TYPE_FORWARD_ONLY) {
System.out.println("ResultSet non-scrollable.");
} else {
System.out.println("ResultSet scrollable.");
} System.out.println("List of Profiles:"); // Move the cursor to the last row
res.last(); // Stop the loop when the cursor is positioned before the first row
while (!res.isBeforeFirst()) {
String firstName = res.getString("FirstName");
String lastName = res.getString("LastName");
System.out.println(" "+firstName+" "+lastName); // Move the cursor backward one row
res.previous();
} // Close ResultSet and Statement
res.close();
sta.close(); con.close();
} catch (Exception e) {
System.err.println("Exception: "+e.getMessage());
}
}
}
The output matches my expectation: profiles are listed backward.
ResultSet scrollable.
List of Profiles:
Keith Harris
19c2 8770b
1090 3fb07
13ba 88356
1352 17d9
11bd 58ad0
1002 e3873
21d6 efd17
Janet Gates
TYPE_SCROLL_INSENSITIVE | Static cursor | Heavy | Only works with read-only concurrency (updatable is downgraded).
SQL Server generates a temporary table, so changes made by others are not visible. Scrollable.
Which confirms that the driver will downgrade when specifying CONCUR_UPDATABLE.
You might want to consider using TYPE_SCROLL_SENSITIVE or simply not combine scrollability with updatability.
Result Sets That Are Not Updateable
An updatable result set is a result set in which rows can be inserted, updated, and deleted. In the following cases, SQL Server cannot create an updatable cursor. The exception generated is, "Result set is not updatable."
| 
 Cause  | 
 Description  | 
 Remedy  | 
|---|---|---|
| 
 Statement is not created by using JDBC 2.0 (or later) syntax  | 
 JDBC 2.0 introduced new methods to create statements. If JDBC 1.0 syntax is used, the result set defaults to read-only.  | 
 Specify result set type and concurrency when creating the statement.  | 
| 
 Statement is created by using TYPE_SCROLL_INSENSITIVE  | 
 SQL Server creates a static snapshot cursor. This is disconnected from the underlying table rows to help protect the cursor from row updates by other users.  | 
 Use TYPE_SCROLL_SENSITIVE, TYPE_SS_SCROLL_KEYSET, TYPE_SS_SCROLL_DYNAMIC, or TYPE_FORWARD_ONLY with CONCUR_UPDATABLE to avoid creating a static cursor.  | 
| 
 Table design precludes a KEYSET or DYNAMIC cursor  | 
 The underlying table does not have unique keys to enable SQL Server to uniquely identify a row.  | 
 Add unique keys to the table to provide unique identification of each row.  | 
http://msdn.microsoft.com/en-us/library/ms378709.aspx
http://jtds.sourceforge.net/resultSets.html
http://stackoverflow.com/questions/13343703/how-to-create-a-scrollable-resultset
TYPE_SCROLL_INSENSITIVE is not compatible with CONCUR_UPDATABLE的更多相关文章
- CodeForces 165E Compatible Numbers(位运算 + 好题)
		
wo integers x and y are compatible, if the result of their bitwise "AND" equals zero, that ...
 - .Net Core 控制台程序错误:Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'.
		
.Net Core 控制台程序错误:Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible wi ...
 - Nuget自己打包引用的时候出现错误:Package is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package 1.0.1 supports: net (.NETFramework,Version=v0.0)
		
Nuget自己打包引用的时候出现错误:Package is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package ...
 - PCRE Perl Compatible Regular Expressions Learning
		
catalog . PCRE Introduction . pcre2api . pcre2jit . PCRE Programing 1. PCRE Introduction The PCRE li ...
 - php 错误  Strict Standards: PHP Strict Standards: Declaration of .... should be compatible with that of 解决办法
		
错误原因:这是由于 php 5.3版本后.要求继承类必须在父类之后定义.否则就会出现Strict Standards: PHP Strict Standards: Declaration of ... ...
 - ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higher
		
昨天在做存储迁移的时候,对ASM磁盘组的东西进行操作时,出现了如标题的错误.经查资料,发现原因如下: 如磁盘组是使用asmca图形化工具创建,则compatible.asm默认设置就已经为11 ...
 - Create CSS3 Buttons Compatible with All Browsers
		
Create CSS3 Buttons Compatible with All Browsers http://www.ourtuts.com/create-css3-buttons-compatib ...
 - A transition animation compatible Library.
		
Android5.0之后为我们提供了许多炫酷的界面过渡效果,其中共享元素过渡也是很有亮点的一个效果,但这个效果只能在Android5.0之后使用,那今天我们就来将共享元素过渡效果兼容到Android4 ...
 - PHP Strict standards:Declaration of … should be compatible with that of…(转)
		
今天把原来一份很老的PHP代码导入到了PaaS上,出现了许多Strict standards:Declaration of … should be compatible with that of…这样 ...
 
随机推荐
- (转)AWK函数
			
http://wiki.jikexueyuan.com/project/awk/built-in-functions.html-------内置函数 http://wiki.jikexueyuan.c ...
 - EJB3 阶段总结+一个EJB3案例 (1)
			
经过一段时时间的学习,对EJB3的相关知识和jboss8的配置有了大概的了解. 网上对EJB的评论很多,基本都是负面的,都表示EJB太过于沉重,不容易维护.但通过这段时间的学习,私下认为,EJB3在某 ...
 - 设置pip源头地址
			
更新pip源 1 . 可以直接在pip时加入参数 比如: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mysqldb 2 . 修改默 ...
 - 编译vs下可调试的ffmpeg和x264
			
以前随手记的笔记,翻出来,整理下哈 ffmpeg 在windows上的编译还是比较麻烦的,而且如果mingw-gcc编译的话,是无法在vs下调试的 所以以前刚开始玩ffmpeg的时候,费了一些功夫,用 ...
 - javac的泛型
			
?:在实例化对象的时候,不确定泛型参数的具体类型时,可以使用通配符进行对象定义. (1)?表示通配符,通配符 与 T 的区别 T:作用于模板上,用于将数据类型进行参数化,不能用于实例化对象. publ ...
 - Java的符号扩展与零扩展
			
byte b = -127; System.out.println(b); // -127 int b1 = b & 0xff; System.out.println(b1); // 129 ...
 - sql日期格式处理
			
sql server中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 ...
 - j2ee高级开发技术课程第一周
			
一.课程目标 这学期开始了J2EE高级开发技术这门课,在此之前我学习了javaSE,为这门课的学习打下了一定的基础.到这学期的结束我希望我能熟悉javaee,能开发企业级应用,对开发轻量级企业应用的主 ...
 - php发送post请求的三种方法
			
引用:http://blog.sjzycxx.cn/post/435/ 1.使用 file_get_contents() /** * 发送post请求 * @param string $url 请求地 ...
 - kendo UI 入门
			
Kendo UI 是一套前端开发宽假,意为日本的“剑道” 首先到官方网站下载最新的30天试用版,地址为:http://www.telerik.com/download/kendo-ui 需要简单注册一 ...