JDBC连接数据以及详细的ResultSet结果集解释
(前面为jdbc的其他参数,文章下部分为ResultSet详解)
ResultSet rs = st.executeQuery(sqlStr)
- driverClass:驱动信息
- url:数据库连接参数
- user:用户名
- password:密码
二.接口
- Connection接口代表着与数据库的链接
connection接口的常用方法
| 返回类型 | 方法 | 功能描述 |
| Statement | createStatment() | 创建一个Statment对象 |
| Statement | createStatment(int resultSetType,int resultSetConcurrency) | 创建一个statment对象,该对象将生成具有给定类型并发性,和可保存的ResultSet对象 |
| PrepareStatement | prepareStatement() | 创建预处理对象prepardStatement |
| CallableStatement | prepareCall(String sql) | 创建一个CallableStatment对象来调用数据库存储过程 |
| boolean | isReadOnly() | 查看当前Collection对象是否为只读 |
| boolean | setReadOnly() | 设置当前对象的默认读写模式 |
| 返回类型 | 方法 | 功能描述 |
| boolean | execute(String sql) | 执行静态sql语句,该语句可能返回多个结果集,(改方法看似鸡肋,其实也很鸡肋,如果该语句可以返回一个ResultSet结果集,则为true,反之false,当然,当sql语句庞大的时候,可以用这个方法来检测是否能够执行从而节省资源) |
| ResultSet | executeQuery(String sql) | 执行给定的sql语句,该语句返回单个ResultSet对象 |
| void | clearBatch() | 清空这个Statement对象的sql命令列表 |
| int[] | executeButch() | 将一批sql命令交给数据库类执行,如果全部成功,则返回更新计数组成的数组,数组元素的排序和sql添加的顺序相同 |
| 方法参数 | 方法 | 功能描述 |
| void | setXXX(int index,[指定给的类型] k) | 将制定位置的参数设置成XXX值 |
| ResultSet | executeQuery() | 执行Sql查询,并返回对应的ResultSet结果集 |
| void | setNull(int index ,int sqlType) | 设置指定的位置为SQL NUll值 |
| int | executeUpdate() | 执行前面包含的参数的动态 [INSERT|UPDATE|DELETE] |
| void | clearParameters() | 清楚当前所有参数值 |
- 例子
PrepareStatment ps = conn.prepareStatment("select * from emp where ename = ? ");
ps.setInt(1,'张三');
//将sql中的第一个参数设置为张三
| 方法 | 功能描述 |
| set+数据类型 | 将指定参数设置为java中指定的数据类型值 |
| get+数据类型 | 以java中指定类型值的形式获取指定的JDBC中相应参数的类型值 |
三.ResultSet结果集详解
| 所有静态字段 | ||
| int | CLOSE_CURSORS_AT_COMMIT | 该常量指示提交当前事务时,具有此可保存性的打开的 ResultSet 对象将被关闭。 |
| int | CONCUR_READ_ONLY | 该常量指示不可以更新的 ResultSet 对象的并发模式。 |
| int | CONCUR_UPDATABLE | 该常量指示可以更新的 ResultSet 对象的并发模式。 |
| int | FETCH_FORWARD | 该常量指示将按正向(即从第一个到最后一个)处理结果集中的行。 |
| int | FETCH_REVERSE | 该常量指示将按逆向(即从最后一个到第一个)处理结果集中的行处理。 |
| int | FETCH_UNKNOWN | 该常量指示结果集中的行的处理顺序未知。 |
| int | FETCH_UNKNOWN | 该常量指示提交当前事务时,具有此可保存性的打开的 ResultSet 对象将保持开放。 |
| int | TYPE_FORWARD_ONLY | 该常量指示光标只能向前移动的 ResultSet 对象的类型。 |
| int | TYPE_SCROLL_INSENSITIVE | 该常量指示可滚动,再固定条件下可以修改表内容; |
| int | TYPE_SCROLL_SENSITIVE | 该常量指示可滚动并且,不可修改表内容; |
| 常用方法 | ||
| 返回类型 | 方法 | 功能描述 |
| boolean | next() | 将光标从当前位置向下移动一行,也就是读取下一行 |
| boolean | previous() | 将光标从当前位置向上移动一行,也就是读取上一行 |
| void | close() | 关闭ResultSet对象 |
| int | getInt(int) | 以int的形式获取结果集,以当前行指定序号的值,以列的编号或者列的名字 |
| int | getInt(String) | 以下跟以上一样以此类推 |
| float | getFloat(int) | |
| float | getFloat(String) | |
| String | getString(int) | |
| String | getString(String) | |
| int | getRow() | 得到光标当前所指定的行号 |
| boolean | absolute(int row) | 光标移动到row指定的行 |
| boolean | relative(int rows) | 光标移动到相对于当前行的指定行,上下使用+和-表示 |


- 最基本的ResultSet
- 这个ResultSet的作用就是完成了查询结果的存储功能,并且只能读取一次,不能够来回滚动进行读取操作,如图;
- 可滚动的ResultSet
- 这个类型支持前后滚动取得记录的next()向下读取以一行,和previous()向上读取以一行,同时还支持absolute(int row)读取指定的一行,以
及relative(int rows)移动到相对于当前行的指定行("-"号和"+")
- 这种结果集的创建方式如下
Statement st = conn.createStatement(int resultSetType, int resultSetConcurrency);
ResultSet rs = st.executeQuery(sqlStr);
- 要实现这种类型的ResultSet对象的,在Statement创建该对象是为其指定类型;
- resultSetType用来设置ResultSet类型是否支持滚动,或者是不可滚动,取值如下:
- ResultSet.TYPE_FORWARD_ONLY 只能向前滚动;
- ResultSet.TYPE_SCROLL_INSENSITIVE 实现任意的前后滚动,即可以使用各种移动指针的方法,并且支持修改;
- Result.TYPE_SCROLL_SENSITIVE 实现任意的前后滚动,对修改敏感;
- resultSetConcurency 是设置 ResultSet 对象能够修改的,取值如下:
- ResultSet.CONCUR_READ_ONLY 设置为只读类型的参数。
- ResultSet.CONCUR_UPDATABLE 设置为可修改类型的参数。
所以如果只是想要可以滚动的类型的 Result,就要在Statement创建ResultSet是为其指定类型
Statement st = conn.createStatement(Result.TYPE_SCROLL_INSENITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st.excuteQuery(sqlStr);
//用这个 Statement 执行的查询语句得到的就是可滚动的 ResultSet 。
- RresltSet不仅可以用来存储查询结果返回的数据,也可以通过修改其内中值,然后起到更新数据库内容的作用
- ResultSet相当于数据中的视图,他没有实体,并且,所提交的Sql语句必须满足一下几点内容
- 只引用了单个表
- 不包含jion和分组信息
- 列中要包含主键信息
Statement st = createstatement(Result.TYPE_SCROLL_INSENSITIVE,Result.CONCUR_UPDATABLE) //具体的ResultSet字段信息请参考上面的字段表
- Statement关闭结果集的方法,当前有一个结果集,又去执行了一条sql语句,会导致第一个结果集关闭,或者在commit方法的时候也会关闭结果集,可保持的意思就是不会被关闭的结果集
Statement st=createStatement(int resultsetscrollable,int resultsetupdateable,int resultsetSetHoldability)
ResultSet rs = st.excuteQuery(sqlStr);
- 两个参数在第3. 4. 中已经阐述的参数 ,这里说明一下resultsetSetHoldability参数
- resultsetSetHoldability参数表名,该结果集是否能够在连接关闭时打开
- ResultSet.HOLD_CURSORS_OVER_COMMIT:表示修改提交时,不关闭数据库.
- ResultSet.CLOSE_CURSORS_AT_COMMIT:表示修改提交时ResultSet关闭.
JDBC连接数据以及详细的ResultSet结果集解释的更多相关文章
- JDBC连接数据以及操作数据
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- jdbc:mysql:/// jdbc连接数据url简写方式
正常情况下我们写jdbc连接本地mysql数据库的时候通常是这样写 jdbc:mysql:localhost:3306/数据库名 下面就是要提到的简单的方法 jdbc:mysql:///数据库名
- Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...
- JDBC连接sql server数据库的详细步骤和代码
JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja ...
- java用JDBC连接MySQL数据库的详细知识点
想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...
- JDBC连接sql server数据库的详细步骤和代码 转
JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序(只做一次): 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.C ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...
- 大数据系列之数据仓库Hive命令使用及JDBC连接
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- 数据层优化-jdbc连接池简述、druid简介
终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化 ...
随机推荐
- Elasticsearch5 及 head插件 安装说明
Elasticsearch5.X及 head插件 安装说明: 1.下载elasticsearch安装文件: a) 下载官方源码: https://artifacts.elastic.co/downlo ...
- centos 7 部署 mysql 报错记录
1. Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY 这是由于yum安装了旧版本的GPG keys造成的,解决办法就是 引用 rpm --i ...
- 夏日户外风景PSD素材
夏日户外风景PSD素材适用于向日葵素材背景图设计 地址:http://www.huiyi8.com/xiangrikui/
- 分享知识-快乐自己:论 Mybatis中的关联关系(一对多,多对一,多对多)
论:一对多:(举例一个省有多个市)就是实体类中有(市)类型集合属性:多对一:(多个市有一个共同的省)就是类中有(省)类型的属性.下面来介绍:一对一.多对一的使用方式. 一对多方: package ml ...
- Composer基础应用1
先唠叨唠叨一些琐碎的事.本人最早从事.Net开发,后来处于好奇慢慢转到了php,因为.net从一早就使用了命名空间(反正从我使用就存在这玩意了),所以在转php时很自然的就使用了命名空间,但是在使用过 ...
- linux命令学习笔记(45):free 命令
free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的 工具中,free命令是最经常使用的命令之一. .命令格式: free [参 ...
- Spring 配置 详细
一.连接池概述 数据库连接池概述: 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指 ...
- ACM学习历程——UVA11234 Expressions(栈,队列,树的遍历,后序遍历,bfs)
Description Problem E: Expressions2007/2008 ACM International Collegiate Programming Contest Unive ...
- 【C】字符串常量和字符数组
此次博客是转载某位博主的文章,不过现在找不到了,所以先声明一下. 先贴一段代码: #include <stdio.h> int main(int argc, const char** ar ...
- HDFS数据迁移目录到正确姿势
添加了一块硬盘,原来的DataNode已经把原有的硬盘占满:怎么办,想要把旧有的数据迁移到新的硬盘上面: 1. 在CDH中修改目录(在HDFS组件中搜索.dir),本例中,新加的硬盘挂载在/data上 ...