- 浏览: 480307 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (288)
- Java (70)
- Web (11)
- JSP (18)
- JavaScript (25)
- JQuery (22)
- HTML (7)
- CSS (2)
- Struts2.X (6)
- Ibatis/Mybatis (6)
- Hibernate (4)
- Spring (8)
- Oracle (23)
- MySql (9)
- Apache (1)
- Tomcat (9)
- Weblogic (2)
- Maven (6)
- Flex (0)
- Junit (2)
- Test (1)
- SVN (6)
- GIS (3)
- Android (1)
- Eclipse (10)
- Thread (3)
- JVM (1)
- Cache (2)
- Design pattern (1)
- Nosql (3)
- Linux (10)
- Hudson/Jenkins (1)
- MQ (1)
- Network (2)
- 生活工作 (5)
- 架构师之路 (6)
- 知识精华荟萃 (9)
- Interview (13)
最新评论
-
276847139:
方法很有效,我的问题就在是在父项目的.classpa ...
手动添加Maven Dependencies -
coosummer:
推荐使用http://buttoncssgenerator.c ...
button css 样式 -
lqz2012:
DBFFileReader是外部框架里面的吧,不是JDK的。楼 ...
java读取dbf文件 -
xudongcsharp:
lx13345 写道java.lang.NoSuchMetho ...
Spring常用错误 -
lx13345:
jar是hibernate3.3GA,ehcache-1.5. ...
Spring常用错误
在遍历结果集的时候,用rs.isLast()来判断是否到达最后一条,结果报出异常:
解决方法是:
在网上搜到的资料如下:
结果集:即使用Statement实例执行一个SQL语句之后得到的一个ResulSet 的对象。其类型分为三种:基本结果集,可滚动结果集,可更新结果集。
一、基本结果集
1、特点:检索方法只有两种:ResultSet.next 和getXXX
2、Statement语句对象创建方式:
a.Statement语句:createStatement()
b.PreParedStatement语句:PreparedcreateStatement(String sql)
c.CallableStatement语句:CallablecreateStatement(String sql)
3、主要方法: a.boolean next()方法 将游标移到下一行,如果是有效数据则返回true,注意查询语句返回的结果中游标的位置为第一行的前面。
b.getXXX(int columnIndex)方法 按列号返回当前行中指定列的值,并将其转换为方法中XXX所对应的java数据类型。
c.getXXX(String columnName)方法 按名返回当前行中指定列的值,并将其转换为方法中XXX所对应的java数据类型。
二、可滚动结果集
1、特点:检索方法:提供各种定位游标的方法自由地再结果集中滚动。弥补了基本结果集只能先前滚动的局限性。
2 Statement语句对象创建方式:
a.Statement:createStatement(int resultSetType,int reslutSetConcurrency)
b.PrepareStatement:prepareStatement(String sql,int resultSetType,int reslutSetConcurrency)
c.CallableStatement:prepareCall(String sql,int resultSetType,int reslutSetConcurrency)
常量
含义描述
TYPE_FORWARD_ONLY
结果集不可滚动,相当于基本结果集。
TYPE_SCROLL_INSENSITIVE
结果集可滚动,但是当结果集处于打开状态时,对底层数据表中所作的变化不敏感。
TYPE_SCROL_SENSITIVE
结果集可滚动,并且当结果集处于打开状态时,对底层数据表中所作的变化敏感。
CONCUR_READ_ONLY
结果集不可更新,所以能够提供最大可能的并发级别。
CONCUR_UPDATABLE
结果集可更新,但只能提供受限的并发级别。
3、主要方法:
●boolean previous()
●boolean first()
●boolean last()
●void beforFirst()将游标移到第一行之前
●void afterLast()将游标移到最后一行之后
●boolean relative(int rows)相对于游标的当前位置将游标移动参数rows指定的行数,正数前负后。
●boolean absolute(int row)将游标移动到参数row指定的数据行 rows为正从结果集的开始向前,负从结果集的末尾向后,为零移到第一行之前。
判断游标当前位置的方法“
● Boolean isBeforeFirst()如果游标位于第一行之前返回true.
●Boolean isAfterLast() 最后一行之后
●boolean isFirst()
●boolean isLast()
三、可更新结果集
1、特点:可更新结果集的数据并将这些更新保存到数据库中。
2、创建方式:
a.Statement:createStatement(int resultSetType,int reslutSetConcurrency)
b.PrepareStatement:prepareStatement(String sql,int resultSetType,int reslutSetConcurrency)
c.CallableStatement:prepareCall(String sql,int resultSetType,int reslutSetConcurrency)
reslutSetConcurrency为CONCUR_UPDATABLE
3、主要方法
更新有两种方式,第一种方式是更新当前数据行的数据,如:
rs.absolute(5); // 移动rs指针至第5行数据
rs.updateString("NAME", "daniel"); // 将该行name列的值更新为“daniel”
rs.updateRow(); //更新数据源的数据
第二种方式是插入一行数据,如:
rs.moveToInsertRow(); // 将指针移动至插入行,插入行是ResultSet对象中的特殊行
rs.updateString(1, 2); // 更新插入行中第一列的值为2
rs.updateInt(2, "daniel"); // 更新第二列中的值为daniel
rs.insertRow();
rs.moveToCurrentRow(); //将指针移动至插入之前的位置
java.sql.SQLException: Invalid operation for forward only resultset : isLast
解决方法是:
PreparedStatement ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
在网上搜到的资料如下:
结果集:即使用Statement实例执行一个SQL语句之后得到的一个ResulSet 的对象。其类型分为三种:基本结果集,可滚动结果集,可更新结果集。
一、基本结果集
1、特点:检索方法只有两种:ResultSet.next 和getXXX
2、Statement语句对象创建方式:
a.Statement语句:createStatement()
b.PreParedStatement语句:PreparedcreateStatement(String sql)
c.CallableStatement语句:CallablecreateStatement(String sql)
3、主要方法: a.boolean next()方法 将游标移到下一行,如果是有效数据则返回true,注意查询语句返回的结果中游标的位置为第一行的前面。
b.getXXX(int columnIndex)方法 按列号返回当前行中指定列的值,并将其转换为方法中XXX所对应的java数据类型。
c.getXXX(String columnName)方法 按名返回当前行中指定列的值,并将其转换为方法中XXX所对应的java数据类型。
二、可滚动结果集
1、特点:检索方法:提供各种定位游标的方法自由地再结果集中滚动。弥补了基本结果集只能先前滚动的局限性。
2 Statement语句对象创建方式:
a.Statement:createStatement(int resultSetType,int reslutSetConcurrency)
b.PrepareStatement:prepareStatement(String sql,int resultSetType,int reslutSetConcurrency)
c.CallableStatement:prepareCall(String sql,int resultSetType,int reslutSetConcurrency)
常量
含义描述
TYPE_FORWARD_ONLY
结果集不可滚动,相当于基本结果集。
TYPE_SCROLL_INSENSITIVE
结果集可滚动,但是当结果集处于打开状态时,对底层数据表中所作的变化不敏感。
TYPE_SCROL_SENSITIVE
结果集可滚动,并且当结果集处于打开状态时,对底层数据表中所作的变化敏感。
CONCUR_READ_ONLY
结果集不可更新,所以能够提供最大可能的并发级别。
CONCUR_UPDATABLE
结果集可更新,但只能提供受限的并发级别。
3、主要方法:
●boolean previous()
●boolean first()
●boolean last()
●void beforFirst()将游标移到第一行之前
●void afterLast()将游标移到最后一行之后
●boolean relative(int rows)相对于游标的当前位置将游标移动参数rows指定的行数,正数前负后。
●boolean absolute(int row)将游标移动到参数row指定的数据行 rows为正从结果集的开始向前,负从结果集的末尾向后,为零移到第一行之前。
判断游标当前位置的方法“
● Boolean isBeforeFirst()如果游标位于第一行之前返回true.
●Boolean isAfterLast() 最后一行之后
●boolean isFirst()
●boolean isLast()
三、可更新结果集
1、特点:可更新结果集的数据并将这些更新保存到数据库中。
2、创建方式:
a.Statement:createStatement(int resultSetType,int reslutSetConcurrency)
b.PrepareStatement:prepareStatement(String sql,int resultSetType,int reslutSetConcurrency)
c.CallableStatement:prepareCall(String sql,int resultSetType,int reslutSetConcurrency)
reslutSetConcurrency为CONCUR_UPDATABLE
3、主要方法
更新有两种方式,第一种方式是更新当前数据行的数据,如:
rs.absolute(5); // 移动rs指针至第5行数据
rs.updateString("NAME", "daniel"); // 将该行name列的值更新为“daniel”
rs.updateRow(); //更新数据源的数据
第二种方式是插入一行数据,如:
rs.moveToInsertRow(); // 将指针移动至插入行,插入行是ResultSet对象中的特殊行
rs.updateString(1, 2); // 更新插入行中第一列的值为2
rs.updateInt(2, "daniel"); // 更新第二列中的值为daniel
rs.insertRow();
rs.moveToCurrentRow(); //将指针移动至插入之前的位置
发表评论
-
常见eclipse环境编译问题小结
2015-07-08 21:46 705Preferences-Installed JRES-jdk ... -
URLEncode
2014-12-29 18:53 957前言: 根据HTTP协议要求,传递参数的值中如果存在特殊字符( ... -
java日期格式小时制区别
2014-12-29 18:29 756SimpleDateFormat ss = new Sim ... -
opencsv
2014-11-11 15:50 922public class CSVDemo { publ ... -
密码学-加密解密 加签验签
2014-08-21 21:37 8908RSA: 1. 加签:用私钥加 ... -
eclipse常用插件
2014-07-27 20:49 7071 velocity 模板编辑插件 实用 http://pro ... -
互联网开发
2014-04-29 19:17 21291.设计数据库时,有时候会根据业务,为了避免表中出现冗余的字 ... -
Servlet Listener
2014-03-26 17:35 1343Listener功能 它是基于观 ... -
数据库事务
2014-03-22 09:56 820数据库事务(Database Transa ... -
java 堆与栈
2014-03-21 16:54 742栈(stack):主要保存基本类型(或者叫内置类型)(char ... -
String、StringBuilder、StringBuffer区别
2014-03-21 16:24 721String 字符串常量,不可变 StringBuffer 字 ... -
数字证书
2014-03-18 17:20 785http://blog.csdn.net/zhulinfeib ... -
fish
2014-03-18 16:48 0互联网和企业应用最大的区别在于表现层的以及业务的复杂性上面。这 ... -
系统代码基本规范
2014-03-13 22:41 0系统代码基本规范 排 ... -
try catch return
2014-03-11 16:22 759package com.java.test; impor ... -
PO/POJO/VO/BO/DAO/DTO
2013-12-26 17:12 793PO(persistant object) 持久对 ... -
servlet
2013-12-21 17:47 710用Servlet获取URL地址。在HttpServletReq ... -
native2ascii
2013-12-16 15:42 764>native2ascii 中国 \u4e2d\u5 ... -
xStream 框架
2013-12-10 15:31 778http://www.cnblogs.com/hoojo/a ... -
Bat命令学习
2013-08-22 17:33 1581基础部分: 一、基础语法: 1.批处理文件是一个“. ...
相关推荐
- `boolean isLast()`:判断是否在最后一行。 这些方法允许我们灵活地移动`ResultSet`对象中的光标位置,以便进行数据检索或更新操作。 #### 3. ResultSet对象数据获取方法 `ResultSet`提供了多种方法来根据不同...
* rs.isLast():判断光标是否在最后一行 * rs.isBeforeFirst():判断光标是否在第一行之前 * rs.isAfterLast():判断光标是否在最后一行之后 Java ResultSet提供了多种方法来处理查询结果,使得开发者可以灵活地...
- `rs.isLast()`:判断光标是否位于结果集的最后一行。 - `rs.isBeforeFirst()`:判断光标是否位于结果集的第一行之前。 - `rs.isAfterLast()`:判断光标是否位于结果集的最后一行之后。 ##### 3. 更新数据相关方法...
- `rs.isLast()`:判断当前游标是否在结果集的最后一行。 - `rs.isBeforeFirst()`:判断当前游标是否在结果集的第一行之前。 - `rs.isAfterLast()`:判断当前游标是否在结果集的最后一行之后。 3. **可滚动性...
例如,可以使用`ResultSet.isBeforeFirst()`、`ResultSet.isAfterLast()`、`ResultSet.isFirst()`、`ResultSet.isLast()`等方法来判断当前状态。 3. **异常处理**:添加适当的异常处理逻辑,确保程序在遇到这类问题...
resultSet.isLast()) { offset += batchSize; } else { break; // 没有更多数据 } resultSet.close(); } ``` 以上代码将分批获取`table`表的数据,每次获取50条,直到没有更多数据为止。注意,这个示例假设...
`ResultSet.getRow()`返回当前行号,而`isFirst()`, `isLast()`, `isBeforeFirst()`, `isAfterLast()`则用于检测光标位置。 2. **可更新结果集**: JDBC 2.0引入了可更新结果集,开发者可以直接使用Java方法而非...
6. rs.isLast():当数据库为 MySQL 时,可以使用 `Connection.prepareStatement(str1)`,而在 Oracle 中必须使用 `Connection.prepareStatement(str1, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_...
此外,还有`isAfterLast()`、`isBeforeFirst()`、`isFirst()`和`isLast()`来判断指针当前位置。ResultSet还提供了诸如`getString(int index)`、`getInt(int index)`等方法,用于获取特定列的数据,以及`deleteRow()`...
1. **新的记录集接口(ResultSet 接口)**:ResultSet接口是JDBC中用于存储查询结果的对象,JDBC 2.0对其进行了扩展,添加了更多的常量和方法来增强其功能。 - **常量定义**: - `FETCH_FORWARD`:指定默认的行处理...
- **Oracle**:需要设置`ResultSet`的类型为`TYPE_SCROLL_INSENSITIVE`和`CONCUR_READ_ONLY`才能使用`isLast()`方法。 **7. 更新操作** - 在Oracle中,对于字符串中出现的单引号,需要进行转义处理,例如使用`...
游标用于在结果集上进行迭代,通过 `isLast()` 方法可以检查是否已到达结果集的末尾。 查询 SQL 语句的完整执行过程通常涉及以下步骤: 1. 加载 JDBC 驱动。 2. 创建 `Connection` 对象,连接数据库。 3. 创建 `...
5. `isBeforeFirst()`,`isAfterLast()`,`isFirst()`,`isLast()`:检查游标当前所在的位置。 6. `getString(int columnIndex)`,`getInt(int columnIndex)`等:获取当前行指定列的数据。 **游标的移动策略:** ...
public void processRow(ResultSet rs) throws SQLException { if (rs.isFirst()) { // 设置每次获取的行数 rs.setFetchSize(500); // 写入表头 for (int i = 0; i ().getColumnCount(); i++) { writeToFile...
2. **JDBC分页**:利用ResultSet的getFirst(), getNext(), isLast()等方法,配合while循环实现分页。这种方式灵活性较高,但效率较低,因为需要先获取所有数据再进行分页。 3. **JSTL标签库**:JSTL(JavaServer ...
14. 获取游标位置:在处理结果集`ResultSet`时,`getRow()`返回当前行数,`isFirst()`、`isBeforeFirst()`、`isLast()`和`isAfterLast()`用于判断当前位置。 15. 禁止表单后退显示过期:设置响应头禁止缓存,如在...
14. **游标位置**:在处理结果集(ResultSet)时,可以使用`getRow()`方法获取当前行数,以及`isFirst()`, `isBeforeFirst()`, `isLast()`, `isAfterLast()`来判断当前位置。 15. **防止表单后退显示过期页面**:...