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 { .... } 
Java

浏览结果集

ResultSet接口中有几种涉及移动光标的方法,包括 -

编号方法描述
1public void beforeFirst() throws SQLException将光标移动到第一行之前
2public void afterLast() throws SQLException将光标移动到最后一行之后。
3public boolean first() throws SQLException将光标移动到第一行。
4public void last() throws SQLException将光标移动到最后一行。
5public boolean absolute(int row) throws SQLException将光标移动到指定的行。
6public boolean relative(int row) throws SQLException从当前指向的位置,将光标向前或向后移动给定行数。
7public boolean previous() throws SQLException将光标移动到上一行。 如果上一行关闭结果集,此方法返回false
8public boolean next() throws SQLException将光标移动到下一行。 如果结果集中没有更多行,则此方法返回false
9public int getRow() throws SQLException返回光标指向的行号。
10public void moveToInsertRow() throws SQLException将光标移动到结果集中的特殊行,该行可用于将新行插入数据库。当前光标位置被记住。
11public void moveToCurrentRow() throws SQLException如果光标当前位于插入行,则将光标移回当前行; 否则,此方法什么也不做

为了更好的理解,建议学习浏览记录示例代码。

查看结果集

ResultSet接口包含数十种获取当前行数据的方法。

每个可能的数据类型都有一个get方法,每个get方法有两个版本 -

  • 一个是采用列名称。
  • 另一个采用列索引。

例如,如果对查看感兴趣的列包含一个int,则需要使用ResultSet的其中一个getInt()方法 -

序号方法描述
1public int getInt(String columnName) throws SQLException返回名为columnName的列中当前行中的int值。
2public int getInt(int columnIndex) throws SQLException返回指定列索引当前行中的int值。列索引从1开始,意味着行的第一列为1,行的第二列为2,依此类推。

类似地,在八个Java基元类型中的每一个的ResultSet接口中都有get方法,以及常见的类型,如java.lang.Stringjava.lang.Objectjava.net.URL等。

还有一些方法可以获取SQL数据类型java.sql.Date,java.sql.Timejava.sql.TimeStampjava.sql.Clobjava.sql.Blob。查看文档以获取有关使用这些SQL数据类型的更多信息。

为了更好的理解,建议学习研究查看结果集示例代码

更新结果集

ResultSet接口包含用于更新结果集的数据的更新方法的集合。

与get方法一样,每种数据类型都有两种更新方法 -

  • 一个是采用列名称。
  • 另一个采用列索引。

例如,要更新结果集当前行的String列,可以使用以下updateString()方法之一:

序号方法描述
1public void updateString(int columnIndex, String s) throws SQLException将指定列中的String值更改为指定的s值。
2public void updateString(String columnName, String s) throws SQLException与前前的方法类似,除了使用列的名称而不是列的索引指定。

有八种基本数据类型的更新方法,以及java.sql包中的StringObjectURL和SQL数据类型。

更新结果集中的一行会更改ResultSet对象中当前行的列,但不会更改底层数据库中的列的值。 要更新数据库中的行,需要调用以下方法之一。

序号方法描述
1public void updateRow()更新数据库中当前行
2public void deleteRow()从数据库中删除当前行
3public void refreshRow()刷新结果集中的数据以反映数据库中最近的任何更改。
4public void cancelRowUpdates()取消对当前行所做的任何更新。
5public void insertRow()在数据库中插入一行。 只有当光标指向插入行时,才能调用此方法。

为了更好的理解,建议您学习研究“更新结果集示例代码”

 

转载于:https://www.cnblogs.com/borter/p/9608768.html

JMeter是一个性能测试工具,可以模拟多种协议进行压力测试。JMeter的JDBC结果是一种对数据库操作的结果进行测试和分析的方式。 在JMeter使用JDBC结果,需要进行以下步骤来进行拼装: 1. 配置数据库连接:在JDBC连接配置元件,填写数据库的相关信息,包括数据库URL、用户名、密码等。这些信息可以用于与数据库建立连接。 2. 编写SQL查询语句:在JDBC请求元件,编写需要执行的SQL查询语句。可以通过使用变量和函数来动态生成查询条件,以便模拟不同的测试场景。 3. 配置结果参数:在JDBC请求元件,配置结果参数,以便将查询结果的字段值保存为变量。可以通过添加"Variable Names"属性,并在其值指定要保存的字段名。 4. 使用结果变量:在后续的测试步骤,可以通过使用保存的结果变量来组装需要的数据。可以使用JMeter提供的函数和变量,对结果进行处理和转换,以便生成需要的测试数据。 通过以上步骤,可以实现对数据库查询结果的拼装。拼装后的结果可以根据需要,用于后续的测试步骤,比如验证结果、输出到文件等。 需要注意的是,使用JMeter进行数据库操作时,需要确保数据库连接的正确性和权限的配置,以及合理使用数据库资源,防止出现性能问题。同时,对于大规模的数据库操作,可能需要进行分批处理,以避免对数据库服务器造成过大的负载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值