1、ResultSet光标控制 
   在创建Statement或PreparedStatement时使用的是Connection的无参数createStatement()方法或preparedStatement()方法。这样获取到的Statement或PreparedStatement对象在执行SQL后所得到的ResultSet只能使用next()方法来逐条取得查询到的每条结果记录。
    在建立Statement对象时,是可以指定结果集类型的:
        · ResultSet.TYPE_FORWARD_ONLY:只能前进的结果集。即结果集ResultSet中的光标只能向前移动(只能调用它的next方法),每移动一次可获取一条结果记录。(默认)
        · ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动的结果集,但其中的数据不受其他会话中用户对数据库更改的影响。
        · ResultSet.TYPE_SCROLL_SENSITIVE:可滚动的结果集,当其他会话中用户更改数据库表的数据时,这个结果集的数据也会同步改变。
    在指定了结果集的类型时,也需要同时指定结果集的并发策略,可以指定的类型如下:
        · ResultSet.CONCUR_READ_ONLY:只读的结果集。结果集中的数据是只读的,不能修改。(默认)
        · ResultSet.CONCUR_UPDATEBLE:可修改的结果集。结果集中的数据可以修改,修改后会同步到数据库中。
package com.yyq.resultset;
import com.yyq.factory.CloseFactory;
import com.yyq.factory.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by gao on 16-4-13.
*/
public class ResultSetTest {
public static void testPager(int firstResult, int maxResults) {
Connection conn = ConnectionFactory.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select id,name,score,class from student";
try {
//可滚动的,只读的结果集
pstmt = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = pstmt.executeQuery();
//光标移到最后一行
rs.absolute(-1); //rs.last();
//获取总记录数
int count = rs.getRow();
System.out.println("Recorder SUM:" + count);
//光标移到指定行的前一行
rs.absolute(firstResult - 1);
for (int i = 0; i < maxResults; i++) {
if (rs.next()) {
System.out.println(rs.getInt(1) + ", " + rs.getString(2) + ", " + rs.getString(4) + ", " + rs.getInt(3));
} else {
break;
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CloseFactory.close(pstmt, conn);
}
}
public static void main(String[] args) {
ResultSetTest.testPager(6, 12);
}
}
 
2、ResultSetMetaData结果集元数据
    ResultSetMetaData表示的是所查询到的数据背后的数据描述——如表名称、列名称、列类型等。ResultSetMetaData提供了很多的方法,用来获取查询到的数据的描述数据。

package com.yyq.resultset;
import com.yyq.factory.CloseFactory;
import com.yyq.factory.ConnectionFactory;
import java.sql.*;
/**
* Created by gao on 16-4-13.
*/
public class ResultSetMetaDataTest {
public static void test() {
Connection conn = ConnectionFactory.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select * from student";
try {
//可滚动的,只读的结果集
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
//在结果集上获取元数据
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount(); //获取总列(字段)数
System.out.println("ColumnCount:" + count);
for (int i = 1; i <= count; i++) {
System.out.println("No:" + i);
System.out.println("Catalog Name:" + rsmd.getCatalogName(i));
System.out.println("Data Type Class:" + rsmd.getColumnClassName(i));
System.out.println("ColumnDisplaySize:" + rsmd.getColumnDisplaySize(i));
System.out.println("ColumnLabel:" + rsmd.getColumnLabel(i));
System.out.println("Column Type:" + rsmd.getColumnType(i));
System.out.println("Column Type Name:" + rsmd.getColumnTypeName(i));
System.out.println("Precision:" + rsmd.getPrecision(i));
System.out.println("Scale"+rsmd.getScale(i));
System.out.println("SchemaName:"+rsmd.getSchemaName(i));
System.out.println("Table Name:"+rsmd.getTableName(i));
System.out.println("IsAutoIncrement:"+rsmd.isAutoIncrement(i));
System.out.println("IsCurrency:"+rsmd.isCurrency(i));
System.out.println("IsNullable:"+rsmd.isNullable(i));
System.out.println("IsReadOnly:"+rsmd.isReadOnly(i));
System.out.println("isSearchable:"+rsmd.isSearchable(i));
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CloseFactory.close(pstmt, conn);
}
}
public static void main(String[] args) {
ResultSetMetaDataTest.test();
}
}

JDBC学习总结(三)的更多相关文章

  1. JDBC学习笔记(三)

    获取数据库的元信息metadata,里面有数据库特性的描述信息,如是否支持事务,是否支持批处理等. Connection conn = DriverManager.getConnection(url, ...

  2. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  3. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  4. JDBC学习笔记(2)——Statement和ResultSet

    Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement ...

  5. JDBC学习笔记(1)——JDBC概述

    JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数 ...

  6. 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    [转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...

  7. 【转】JDBC学习笔记(2)——Statement和ResultSet

    转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数 ...

  8. 【转】JDBC学习笔记(1)——JDBC概述

    转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据 ...

  9. jdbc学习总结

    jdbc学习总结:   一.简介: jdbc,直译为java连接数据库.实际为java为很好的操作数据库而提供的一套接口,接口的实现(即驱动)由各个数据库厂商提供.   二.知识要点: 连接5要素,3 ...

随机推荐

  1. c语言之fopen参数(r+,w+,a+)

    经查找一些资料,并且亲自实验之后得出: r+:打开已存在的文件时,光标位于开头,文件可读,可写, 写数据时,由于光标位于开头,所以会覆盖原有数据 w+:打开的文件已存在时,将覆盖原文件 a+:打开已存 ...

  2. Oracle中的if...then...elsif

    if...then...elsif实现多分支判断语句 其语法如下: if <condition_expression1> then plsql_sentence_1; elseif< ...

  3. ccache高速编译工具

    ccache的主页:http://ccache.samba.org distcc的主页:http://distcc.samba.org 1.背景: 在处理一些规模相对较大的工程时,编译花费的时间可能会 ...

  4. POJ 3321 DFS序+线段树

    单点修改树中某个节点,查询子树的性质.DFS序 子树序列一定在父节点的DFS序列之内,所以可以用线段树维护. 1: /* 2: DFS序 +线段树 3: */ 4:   5: #include < ...

  5. Java Day 02

    关键字 都是小写,类名首字母大写 标识符 1.数字不可以开头 2.不可以使用关键字 区分大小写 26个大小写字母.0-9._.$ 组成 main是关键字么? 注释 单行注释 // 多行注释 /* */ ...

  6. cookie、session的联系和区别,多台web服务器如何共享session?

    cookie在客户端保存状态,session在服务器端保存状态.但是由于在服务器端保存状态的时候,在客户端也需要一个标识,所以session也可能要借助cookie来实现保存标识位的作用.cookie ...

  7. FindWindow()&&FindWindowEx

    这个函数呢,我一般用来自动刷刷网页啥的比如我最近就在刷52破解的在线时间,好啦怎么用是你自己的事情. FindWindow()主要用来获取目标句柄 或着说窗口的权限 HWND FindWindow( ...

  8. JSP:useBean,setProperty的使用

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  9. ASP.NET Web – 状态管理

    状态类型 客户端或服务器资源 有效时间 ViewState 客户端 只在一个页面中 Cookie 客户端 关闭浏览器时会删除临时cookie,永久cookie存储在客户系统的磁盘上 Session 服 ...

  10. 清除SQL Server执行计划

    有时需要调试SQL语句的性能, 需要不断的执行SQL语句, 可是多次执行同一条语句的时候,SQL Server 会缓存表的数据,结果就测不出来 实际的 SQL 的性能 用以下SQL可以清除缓存数据 D ...