java中游标
package YouBiao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class YouBiaoTest {
/**
* 一次只从数据库中查询最大maxCount条记录
* @param sql 传入的sql语句
* @param startNo 从哪一条记录开始
* @param maxCount 总共取多少条记录
*/
public void getData(String sql,int startNo,int maxCount){ try {
Connection conn = ConnectionUtil.getConnection();
// conn.prepareStatement(sql,游标类型,能否更新记录);
// 游标类型:
// ResultSet.TYPE_FORWORD_ONLY:只进游标
// ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。
// ResultSet.TYPE_SCROLL_SENSITIVE:可滚动。当其他用户更改数据库时这个记录也会改变。
// 能否更新记录:
// ResultSet.CONCUR_READ_ONLY,只读
// ResultSet.CONCUR_UPDATABLE,可更新
PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//最大查询到第几条记录
pstat.setMaxRows(startNo+maxCount-1);
ResultSet rs = pstat.executeQuery();
//将游标移动到第一条记录
rs.first();
// 游标移动到要输出的第一条记录
rs.relative(startNo-2);
while(rs.next())
System.out.println(rs.getInt(1));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 从数据库中查询所有记录,然后通过游标来获取所需maxCount条记录
* @param sql 传入的sql语句
* @param startNo 从哪一条记录开始
* @param maxCount 总共取多少条记录
*/
public void getDataFromAll(String sql,int startNo,int maxCount){ try {
Connection conn = ConnectionUtil.getConnection();
PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = pstat.executeQuery();
rs.first();
rs.relative(startNo-1);
int i = startNo-1;
while(i < startNo + maxCount-1 && !rs.isAfterLast()){
System.out.println(rs.getInt(1));
i++;
rs.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package YouBiao; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class ConnectionUtil {
private static String driver;
private static String uri;
private static String user;
private static String password; static {
Properties props = new Properties();
try {
props.load(ConnectionUtil.class.getClassLoader()
.getResourceAsStream("properties文件路径"));
driver = props.getProperty("driver");
uri = props.getProperty("uri");
user = props.getProperty("user");
password = props.getProperty("password");
Class.forName(driver);
} catch (Exception e) {
}
} /**
* 获得Connection对象
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception {
Connection con = DriverManager.getConnection(uri, user, password);
return con;
} /**
* 关闭ResultSet对象
* @param rs
*/
public static void closeResultSet(ResultSet rs) {
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
}
} /**
* 关闭Statement对象
* @param stmt
*/
public static void closeStatement(Statement stmt) {
if (stmt != null)
try {
stmt.close();
} catch (SQLException e) {
}
} /**
* 关闭Connection对象
* @param con
*/
public static void closeConnection(Connection con) {
if (con != null)
try {
con.close();
} catch (SQLException e) {
}
} }
java中游标的更多相关文章
- 小学生之Java中迭代器实现的原理
一. 引言 迭代这个名词对于熟悉Java的人来说绝对不陌生.我们常常使用JDK提供的迭代接口进行java collection的遍历: Iterator it = list.iterator();wh ...
- 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架
前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...
- JAVA中 XML与数据库互转 学习笔记三
要求 必备知识 JAVA基础知识,XML基础知识,数据库的基本操作. 开发环境 MyEclipse10/MySql5.5 资料下载 源码下载 数据库在数据查询,修改,保存,安全等方面与其他数据处理 ...
- Java中执行存储过程和函数(web基础学习笔记十四)
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- Java中迭代器实现的原理
一. 引言 迭代这个名词对于熟悉Java的人来说绝对不陌生.我们常常使用JDK提供的迭代接口进行java collection的遍历: Iterator it = list.iterator();wh ...
- java中数组以及集合
java中数组: 数组在Java里是一种特殊类型,有别于普通的“类的实例”的对象.但实际数组也是一种对象类型,int[]a = new int[5] a是在java栈中分配的引用变量,类型是int[ ...
- Java中关于内存泄漏出现的原因以及如何避免内存泄漏
转账自:http://blog.csdn.net/wtt945482445/article/details/52483944 Java 内存分配策略 Java 程序运行时的内存分配策略有三种,分别是静 ...
- Java中执行存储过程和函数
装载于:http://www.cnblogs.com/liunanjava/p/4261242.html 一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. Ca ...
- Java中的list与Set、Map区别及适用场景
Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类,但是却让其被继承产生了两个接口,就是Set和List.Set中不能包含重复的元素.List是一个有序的集合,可以包含 ...
随机推荐
- 07_ListView
ListView是用来显示一个列表的控件,它在Android源代码中是继承AbsListView类的,AbsListView类是继承于AdapterView类的,而AdapterView类是继承Vie ...
- Java 生成有序 UUID
UUID.randomUUID() 生成的 UUID 是无序的,如果作为数据主键,不利于索引 Hibernate 的 UUIDHexGenerator.generate() 方法可以生成有序的 UUI ...
- 第14.13节 BeautifulSoup的其他功能导览
前面<第14.9节 Python中使用urllib.request+BeautifulSoup获取url访问的基本信息 >.<第14.10节 Python中使用BeautifulSo ...
- Python学习随笔:PyCharm的错误检测使用及调整配置减少错误数量
老猿使用PyCharm有将近一个月了,发现PyCharm并不能很好的完成语法检查,有时运行时突然终止,仔细核查却发现是基本的语法错误,不过有次无意中移动鼠标到代码最右边的边框时发现其实PyCharm有 ...
- RedHat操作指令第2篇
六.RPM包管理命令 主要功能 查询RPM软件.包文件的相关信息 安装.升级.卸载RPM软件包 维护RPM数据库信息 查询RPM软件信息 查询已安装的RPM软件信息 格式:rpm -q[子选项] [软 ...
- CTFD平台部署自制题目指北(灌题)
给实验室同学搭建的CTFD平台用于内部训练和CTF的校赛,为了循序渐进当然是先内部出一些简单入门的题目,但是网上大部分关于CTFD平台的都只是部署,而关于题目放置的内容却很少,虽然这个过程比较简单,但 ...
- 【APIO2019】路灯(ODT & (树套树 | CDQ分治))
Description 一条 \(n\) 条边,\(n+1\) 个点的链,边有黑有白.若结点 \(a\) 可以到达 \(b\),需要满足 \(a\to b\) 的路径上的边不能有黑的.现给出 \(0\ ...
- 应用案例——高并发 WEB 服务器队列的应用
在高并发 HTTP 反向代理服务器 Nginx 中,存在着一个跟性能息息相关的模块 - 文件缓存. 经常访问到的文件会被 nginx 从磁盘缓存到内存,这样可以极大的提高 Nginx 的并发能力,不过 ...
- STL——容器(Map & multimap)的插入与迭代器
1. 容器(Map & multimap)的插入 map.insert(...); //往容器插入元素,返回pair<iterator,bool> map中插入元素的四种方式 ...
- sqli-labs lexx25-28a(各种过滤)
less-25AND OR 过滤 less-25a基于Bool_GET_过滤AND/OR_数字型_盲注 less-26过滤了注释和空格的注入 less-26a过滤了空格和注释的盲注 less-27过滤 ...