- java数组入门教程
- java数组的遍历
- 基于debian(ubuntu)的JDK安装与卸载-vps环境搭建实录(一)
- java环境变量配置(windows7系统)
- java开发环境配置
- 第一个java程序 helloword
- 使用eclipse快速开发java程序
- Java基础语法
- Java对象和类
- Java基本数据类型
- Java变量类型
- Java修饰符
- Java运算符
- Java循环结构 – for, while 及 do…while
- Java分支结构 – if…else/switch
- Java Number类
- Java Character类
- Java String类
- Java日期时间
- java异常处理分类
- java Exception异常处理实例
- java.util.UUID 工具类详解
- java数字格式化类DecimalFormat详解
- JDBC系列教程之一:jdbc简单介绍
- JDBC系列教程之二:jdbc连接数据的步骤
- JDBC系列教程之三:JDBC基本的CRUD(创建、读取、更新、删除)
- JDBC系列教程之四:SQL注入PreparedStatement和Statement
- JDBC系列教程之五:数据类型
- JDBC系列教程之六:一个简单用户相关的数据访问层
- JDBC系列教程之七:用配置文件(properties)和反射实现与具体类的耦合
- JDBC系列教程之八:事务-ACID
- JDBC系列教程之九:事务-SavePoint与JTA
- JDBC系列教程之十:隔离级别
- JDBC系列教程之十一:其他的几个API
- JDBC系列教程之十二:DatabaseMetaData(数据库的元数据信息)和ParameterMetaData(参数的元数据信息)
- JDBC系列教程之十三:ResultSetMetaData
- JDBC系列教程之十四:用反射ResultSetMetaData将查询结果读入对象中
- JDBC系列教程之十五:数据源和连接池
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
知识点
相关文章
更多最近更新
更多JDBC系列教程之十一:其他的几个API
2019-03-28 00:11|来源: 领悟书生
其他的几个API
l PreparedStatement.getGeneratedKeys()
PreparedStatementps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.executeUpdate();
ResultSetrs = st.getGeneratedKeys();rs.getInt(1);
l 批处理,可以大幅度提升大量增、删、改的速度。
PreparedStatement.addBatch();
PreparedStatement.executeBatch();
BatchTest.java |
static void createBatch() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); String sql = "insert into user(name,birthday, money) values (?, ?, ?) "; ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); for (int i = 0; i < 100; i++) { ps.setString(1, "name" + i); ps.setDate(2, new Date(System.currentTimeMillis())); ps.setFloat(3, 100f + i);
//批量 ps.addBatch(); } int[] is = ps.executeBatch(); } finally { JdbcUtils.free(rs, ps, conn); } |
l 可滚动的结果集
Statementst =
connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSetrs = st.executeQuery(sql);
rs.beforeFirst();rs.afterLast();rs.first();rs.isFirst();rs.last();rs.isLast();
rs.absolute(9);rs.moveToInsertRow();
可滚动结果集与分页技术ScrollTest.java |
package com.hyneng.jdbc;
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
/** * 2010-10-08 * @author HuangYineng */ public class ScrollTest {
public static void main(String[] args) throws SQLException { scroll(); }
static void scroll() throws SQLException { Connection conn = null; Statement st = null; ResultSet rs = null; try { // 2.建立连接 conn = JdbcUtils.getConnection(); st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); // rs = st.executeQuery("select id, name, money, birthday from user where id<10"); //分页,从150条开始,取10条 rs = st.executeQuery("select id, name, money, birthday from user limit 150, 10"); while (rs.next()) { System.out.println(rs.getObject("id") + "\t" + rs.getObject("name") + "\t" + rs.getObject("birthday") + "\t" + rs.getObject("money")); }
System.out.println("------------"); //固定到哪一行 rs.absolute(150); int i = 0; while (rs.next() && i < 10) { i++; System.out.println(rs.getObject("id") + "\t" + rs.getObject("name") + "\t" + rs.getObject("birthday") + "\t" + rs.getObject("money")); }
// if (rs.previous()) // System.out.println(rs.getObject("id") + "\t" // + rs.getObject("name") + "\t" // + rs.getObject("birthday") + "\t" // + rs.getObject("money"));
} finally { JdbcUtils.free(rs, st, conn); } } }
|
l 可更新的结果集
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs.updateString("colname", "new value");
rs.updateRow();
OtherApi---read() |
static void read() throws SQLException, InterruptedException { Connection conn = null; Statement st = null; ResultSet rs = null; try { // 2.建立连接 conn = JdbcUtils.getConnection(); // 3.创建语句 st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
// 4.执行语句 rs = st.executeQuery("select id, name, money, birthday from user where id < 5");
// 5.处理结果 while (rs.next()) { int id = rs.getInt("id"); System.out.println("show " + id + "..."); Thread.sleep(10000); System.out.println(id + "\t" + rs.getObject("name") + "\t" + rs.getObject("birthday") + "\t" + rs.getObject("money")); } } finally { JdbcUtils.free(rs, st, conn); } } |
本文链接:JDBC系列教程之十一:其他的几个API,转自请注明:http://www.656463.com/article/815
相关问答
更多-
oracle和jdbc的视频教程哪个讲的好[2021-06-17]
你说的这两个都不是同一类东西。 学习数据库,如果重在快速入门应用:选择MYSQL。它是开源的而且网上教程很多 如果是想学习深入的话,一边看数据库概论一边学习ORACLE操作是很好的方法 如果再想深入,那么就可以在学习好ORACLE基础上学习它的存储过程 触发器和PLSQL编程 JDBC是JAVA连接各种数据库的API不是数据库 -
oracle和jdbc的视频教程哪个讲的好[2022-04-08]
你说的这两个都不是同一类东西。 学习数据库,如果重在快速入门应用:选择MYSQL。它是开源的而且网上教程很多 如果是想学习深入的话,一边看数据库概论一边学习ORACLE操作是很好的方法 如果再想深入,那么就可以在学习好ORACLE基础上学习它的存储过程 触发器和PLSQL编程 JDBC是JAVA连接各种数据库的API不是数据库 -
谁有关于Drwamweaver的系列教程么?[2021-08-13]
www.78soft.com -
电脑基础.实例.上机系列教程[2022-01-06]
针对这门课程的附带,当然是教程盘啦 -
谁有这个系列的全部Breaking教程[2021-06-18]
一个不错的教学篇: http://cook.163.cn/163cn_consume/sports/page/dance/show/3.asx 跳转+风车+直升机+托马斯教程: http://szhiphop.com/guide_temp/toprock+uprock+footwork.wmv 韩国的BREAKING教学: http://211.239.154.86/data/break2.wmv http://www.gzyp.cn/consume/sports/page/dance/show/1.rm ... -
wdcp系列教程之隐藏Nginx版本号[2021-05-30]
WDCP 隐藏Nginx版本号教程各大门户都隐藏nginx的版本号 他们如此做必有道理所以我们也学习吧总共两步!第一步:先到 /www/wdlinux/nginx-1.4.1(我升级了版本)/conf 下 找到 nginx.conf 文件然后打开找到 tcp_nodelay on;在下面那一行添加 server_tokens off; 即可如:keepalive_timeout60; tcp_nodelay on;server_tokens off;这样就行了 (高手别笑,教程本来就是要方便简便)第二步:如 ... -
延时拍摄LRTimelapse怎么使用,哪位老师有教程之类(中文的)[2019-05-13]
[url]http://blog.sina.com.cn/s/blog_5454f31301014sxj.html这个网址 作者写的还蛮详细的 一起研究吧 感觉使用这个软件非常专业 很严谨的工作流程 -
是的,你可以使用 DatabaseMetaData.getJDBCMajorVersion() 检索此驱动程序的主要JDBC版本号。 和DatabaseMetaData.getJDBCMinorVersion() : 检索此驱动程序的次要JDBC版本号。 这是在Java 1.4(JDBC 3)中添加的; 请注意,没有JDBC 3.1。 所以 Connection connection = .... DatabaseMetaData dbmd = connection.getDatabaseMetaData( ...