JDBC结果集
SQL语句执行后从数据库查询读取数据,返回的数据放在结果集中。 SELECT
语句用于从数据库中选择行并在结果集中查看它们的标准方法。 java.sql.ResultSet
接口表示数据库查询的结果集。
ResultSet
对象维护指向结果集中当前行的游标。 术语“结果集”是指包含在ResultSet
对象中的行和列数据。
ResultSet
接口的方法可以分为三类:
- 浏览方法:用于移动光标。
- 获取方法:用于查看光标指向的当前行的列中的数据。
- 更新方法:用于更新当前行的列中的数据。 然后在基础数据库中更新数据。
光标可以基于ResultSet
的属性移动。当创建生成ResultSet
的相应Statement
时,将指定这些属性。
JDBC提供以下连接方法来创建具有所需ResultSet
的语句 -
createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);
第一个参数表示ResultSet
对象的类型,第二个参数是两个ResultSet
常量之一,用于指定结果集是只读还是可更新。
ResultSet类型
可能的RSType
值如下。如果不指定任何ResultSet
类型,将自动分配一个TYPE_FORWARD_ONLY
值。
类型 | 描述 |
---|---|
ResultSet.TYPE_FORWARD_ONLY |
光标只能在结果集中向前移动。 |
ResultSet.TYPE_SCROLL_INSENSITIVE |
光标可以向前和向后滚动,结果集对创建结果集后发生的数据库所做的更改不敏感。 |
ResultSet.TYPE_SCROLL_SENSITIVE |
光标可以向前和向后滚动,结果集对创建结果集之后发生的其他数据库的更改敏感。 |
ResultSet的并发性
可能的RSConcurrency
如下。 如果不指定任何并发类型,将自动获得一个CONCUR_READ_ONLY
值。
并发 | 描述 |
---|---|
ResultSet.CONCUR_READ_ONLY |
创建只读结果集,这是默认值。 |
ResultSet.CONCUR_UPDATABLE |
创建可更新的结果集 |
到目前为止我们写的所有例子可以写成如下,它初始化一个Statement
对象来创建一个只向前的只读ResultSet
对象 -
try {
Statement stmt = conn.createStatement(
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY);
}
catch(Exception ex) {
....
}
finally {
....
}
浏览结果集
ResultSet
接口中有几种涉及移动光标的方法,包括 -
编号 | 方法 | 描述 |
---|---|---|
1 | public void beforeFirst() throws SQLException |
将光标移动到第一行之前 |
2 | public void afterLast() throws SQLException |
将光标移动到最后一行之后。 |
3 | public boolean first() throws SQLException |
将光标移动到第一行。 |
4 | public void last() throws SQLException |
将光标移动到最后一行。 |
5 | public boolean absolute(int row) throws SQLException |
将光标移动到指定的行。 |
6 | public boolean relative(int row) throws SQLException |
从当前指向的位置,将光标向前或向后移动给定行数。 |
7 | public boolean previous() throws SQLException |
将光标移动到上一行。 如果上一行关闭结果集,此方法返回false 。 |
8 | public boolean next() throws SQLException |
将光标移动到下一行。 如果结果集中没有更多行,则此方法返回false 。 |
9 | public int getRow() throws SQLException |
返回光标指向的行号。 |
10 | public void moveToInsertRow() throws SQLException |
将光标移动到结果集中的特殊行,该行可用于将新行插入数据库。当前光标位置被记住。 |
11 | public void moveToCurrentRow() throws SQLException |
如果光标当前位于插入行,则将光标移回当前行; 否则,此方法什么也不做 |
为了更好的理解,建议学习浏览记录示例代码。
查看结果集
ResultSet
接口包含数十种获取当前行数据的方法。
每个可能的数据类型都有一个get
方法,每个get
方法有两个版本 -
- 一个是采用列名称。
- 另一个采用列索引。
例如,如果对查看感兴趣的列包含一个int
,则需要使用ResultSet
的其中一个getInt()
方法 -
序号 | 方法 | 描述 |
---|---|---|
1 | public int getInt(String columnName) throws SQLException |
返回名为columnName 的列中当前行中的int 值。 |
2 | public int getInt(int columnIndex) throws SQLException |
返回指定列索引当前行中的int 值。列索引从1 开始,意味着行的第一列为1 ,行的第二列为2 ,依此类推。 |
类似地,在八个Java基元类型中的每一个的ResultSet
接口中都有get
方法,以及常见的类型,如java.lang.String
,java.lang.Object
和java.net.URL
等。
还有一些方法可以获取SQL数据类型java.sql.Date,java.sql.Time
,java.sql.TimeStamp
,java.sql.Clob
和java.sql.Blob
。查看文档以获取有关使用这些SQL数据类型的更多信息。
为了更好的理解,建议学习研究查看结果集示例代码
更新结果集
ResultSet
接口包含用于更新结果集的数据的更新方法的集合。
与get方法一样,每种数据类型都有两种更新方法 -
- 一个是采用列名称。
- 另一个采用列索引。
例如,要更新结果集当前行的String
列,可以使用以下updateString()
方法之一:
序号 | 方法 | 描述 |
---|---|---|
1 | public void updateString(int columnIndex, String s) throws SQLException |
将指定列中的String 值更改为指定的s 值。 |
2 | public void updateString(String columnName, String s) throws SQLException |
与前前的方法类似,除了使用列的名称而不是列的索引指定。 |
有八种基本数据类型的更新方法,以及java.sql
包中的String
,Object
,URL
和SQL数据类型。
更新结果集中的一行会更改ResultSet
对象中当前行的列,但不会更改底层数据库中的列的值。 要更新数据库中的行,需要调用以下方法之一。
序号 | 方法 | 描述 |
---|---|---|
1 | public void updateRow() |
更新数据库中当前行 |
2 | public void deleteRow() |
从数据库中删除当前行 |
3 | public void refreshRow() |
刷新结果集中的数据以反映数据库中最近的任何更改。 |
4 | public void cancelRowUpdates() |
取消对当前行所做的任何更新。 |
5 | public void insertRow() |
在数据库中插入一行。 只有当光标指向插入行时,才能调用此方法。 |
为了更好的理解,建议您学习研究“更新结果集示例代码”
JDBC结果集的更多相关文章
- JDBC结果集rs.next()注意事项
写在前面: 用JDBC从数据库中查询数据要用到结果集ResultSet,其中我们在获取结果的时候经常用到rs.next()方法来判断是否查询到了数据. 但是要特别注意,next()方法用一次,游标就往 ...
- JDBC资料集
1.基本的JDBC概念: http://dev.mysql.com/doc/refman/5.1/zh/connectors.html#cj-basic-jdbc 2.JSP&Servlet学 ...
- Java JDBC结果集的处理
结果集指针的移动 while (resultSet.next()){ //...... } 指针最初指向第一条记录之前,next()是指向下一个位置,返回的是boolean值,true表示有内容(记录 ...
- SHDP--Working With HBase (二)之HBase JDBC驱动Phoenix与SpringJDBCTemplate的集成
Phoenix:Phoenix将SQL查询语句转换成多个scan操作,并编排执行最终生成标准的JDBC结果集. Spring将数据库访问的样式代码提取到JDBC模板类中,JDBC模板还承担了资源管 ...
- Apache Phoenix JDBC 驱动和Spring JDBCTemplate的集成
介绍:Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排运行以生成标准的JDBC结果集. 直接使用HBase API.协同处理器与自己定义过滤器.对于简单查询来说,其性能 ...
- JDBC 接口学习
说明:文章所有内容皆选自实验楼教程[JDBC 入门教程],想要学习更多JDBC,可以点击教程进行学习~ JDBC 简介 JDBC 的全称是 Java Database Connectivity,叫做 ...
- spring+activity+mysql集群
第一步:先配置好第一个activityMQ 在broker外面加入数据库的连接信息,并将mysql的mysql-connector-java.jar,即java连接mysql的jar包放入apach ...
- JDBC——入门知识【转】
1. 什么是JDBC:Java数据库连接性(JavaDatabase Connectivity) API,允许用户从Java应用程序中访问任何表格化数据源. 2. JDBC除了提供到更宽范围的SQ ...
- Java JDBC 基础
JDBC API 包含以下几个核心部分: 1:JDBC 驱动 2:Connections (连接) 3:Statements (声明) 4:Result Sets (结果集) JDBC: 打开数据库连 ...
随机推荐
- A implementaion for 2D blue noise
http://www.redblobgames.com/articles/noise/2d/
- 【ARM】2410裸机系列-uart串口通信
开发环境 (1)硬件平台:FS2410 (2)主机:Ubuntu 12.04 FS2410串口的原理图 串口UART寄存器配置 配置TXD0与RXD0(GPH2.GPH3) 设置波特率(UBRDI ...
- 【驱动】DM9000网卡驱动分析
Preface 内核源码版本:linux-2.6.18 网卡驱动·linux内核网络分层结构:http://infohacker.blog.51cto.com/6751239/122114 ...
- 泛微OA e-cology8 数据库链接
数据库恢复 数据库恢复的恢复请按照如下步骤进行: Ø 重新安装对应版本的数据库服务软件 Ø 通过数据库软件本身的还原工具还原备份数据库文件 Sqlserver可以通过企业管理器直接还原备份文件或者附加 ...
- js中取小数整数部分函数;取小数部分
1.丢弃小数部分,保留整数部分 parseInt(23.56); 结果:23 2.向上取整,有小数就整数部分加1 Math.ceil(23.56) 结果:24 3,四舍五入. Math.round(2 ...
- 【linux】dpkg info修复及dpkg: warning: files list file for package
mv /var/lib/dpkg/info /var/lib/dpkg/info.bak //现将info文件夹更名 sudo mkdir /var/lib/dpkg/info //再新建一个新的in ...
- Android SDK下载和更新失败解决方法
原因是dl-ssl.google.com访问不到,解决方法就是修改C:\Windows\System32\drivers\etc\hosts文件.添加一行: 74.125.237.1 dl ...
- Win8常用快捷键
Windows 8中常用的快捷键 Windows 键 可在开始屏幕主菜单及最后一个应用程序间循环切换 Windows 键 + C 打开“超级按钮” Windows 键 + I 打开当前程序的“设置”菜 ...
- Faiss教程:索引(1)
索引是faiss的关键知识,我们重点介绍下. 索引方法汇总 有些索引名,我就不翻译了,根据英文名去学习更准确. 索引名 类名 index_factory 主要参数 字节数/向量 精准检索 备注 精准的 ...
- 项目抛弃Tomcat容器,用代码启动Tomcat插件
tomato启动代码如下: package tomcat; import org.apache.catalina.connector.Connector; import org.apache.cata ...