1.不可滚动,不可更新结果集测试
package com.yli.demo; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.Map; import com.yli.dal.util.RowMapper; /** * [ResultSet不可滚动不可更新结果集测试] */ public class StatementTest { public static void main(String[] args) { Test1(); // 测试[一个Connection+一个Statement+一个SQL] // Test2(); // 测试[一个Connection+一个Statement+多个SQL] // Test3(); // 测试[一个Connection+一个Statement+多个SQL] // Test4(); // 测试ResultSet被关闭出错的情况 // Test5(); // 测试[一个Connection+多个Statement+多个SQL] // Test6(); // 预编译PreparedStatement测试 } /** * 一个Connection创建一个Statement <br> * 一个Statement执行一个SQL */ public static void Test1() { try { Connection conn; conn = ConnectionUtil.getConnection(); Statement statement = conn.createStatement(); String sql = "select * from ES_T_SHOP_AFFICHE"; ResultSet rs = statement.executeQuery(sql); List<Map<String, Object>> list = RowMapper.getForList(rs); ConnectionUtil.close(conn); System.out.println(list); } catch (SQLException e) { e.printStackTrace(); } } /** * 一个Connection创建一个Statement <br> * 一个Statement执行多个SQL[查询在最后执行并返回ResultSet,得到ResultSet后立即使用] */ public static void Test2() { try { Connection conn; conn = ConnectionUtil.getConnection(); Statement statement = conn.createStatement(); // Statement[update] String sql = "update ES_T_SHOP_AFFICHE set AFFICHETITLE='hello' where AFFICHEID=100001"; statement.execute(sql); // Statement[delete] sql = "delete ES_T_SHOP_AFFICHE where AFFICHEID=100002"; statement.execute(sql); // Statement[select] sql = "select * from ES_T_SHOP_AFFICHE"; ResultSet rs = statement.executeQuery(sql); // 立即使用ResultSet List<Map<String, Object>> list = RowMapper.getForList(rs); System.out.println(list); ConnectionUtil.close(conn); } catch (SQLException e) { e.printStackTrace(); } } /** * 一个Connection创建一个Statement <br> * 一个Statement执行多个SQL[查询在最开始执行并返回ResultSet,得到ResultSet后立即使用] */ public static void Test3() { try { Connection conn; conn = ConnectionUtil.getConnection(); Statement statement = conn.createStatement(); // Statement[select] String sql = "select * from ES_T_SHOP_AFFICHE"; ResultSet rs = statement.executeQuery(sql); // 立即使用ResultSet List<Map<String, Object>> list = RowMapper.getForList(rs); System.out.println(list); // Statement[update] sql = "update ES_T_SHOP_AFFICHE set AFFICHETITLE='admin' where AFFICHEID=100001"; statement.execute(sql); // Statement[delete] sql = "delete ES_T_SHOP_AFFICHE where AFFICHEID=100002"; statement.execute(sql); ConnectionUtil.close(conn); } catch (SQLException e) { e.printStackTrace(); } } /** * 一个Connection创建一个Statement <br> * 一个Statement执行多个SQL[查询在最开始执行并返回ResultSet,得到ResultSet后没有立即使用] <br> * Statement经过多次执行,再使用先前的ResultSet,会出错 */ public static void Test4() { try { Connection conn; conn = ConnectionUtil.getConnection(); Statement statement = conn.createStatement(); // Statement[select] String sql = "select * from ES_T_SHOP_AFFICHE"; ResultSet rs = statement.executeQuery(sql); // Statement[update] sql = "update ES_T_SHOP_AFFICHE set AFFICHETITLE='hello' where AFFICHEID=100001"; statement.execute(sql); // Statement[delete] sql = "delete ES_T_SHOP_AFFICHE where AFFICHEID=100002"; statement.execute(sql); // Statement经过多次SQL执行之后,再使用先前查询出来的ResultSet // 系统出错原因:因为经历过其他执行,到时ResultSet已经被关闭 List<Map<String, Object>> list = RowMapper.getForList(rs); System.out.println(list); ConnectionUtil.close(conn); } catch (SQLException e) { e.printStackTrace(); } } /** * 一个Connection创建多个个Statement <br> * 一个Statement执行多个SQL */ public static void Test5() { try { Connection conn; conn = ConnectionUtil.getConnection(); Statement statement1 = conn.createStatement(); // Statement[select] String sql = "select * from ES_T_SHOP_AFFICHE"; ResultSet rs = statement1.executeQuery(sql); List<Map<String, Object>> list = RowMapper.getForList(rs); System.out.println(list); // Statement[update] sql = "update ES_T_SHOP_AFFICHE set AFFICHETITLE='haha' where AFFICHEID=100001"; statement1.execute(sql); // Statement[delete] sql = "delete ES_T_SHOP_AFFICHE where AFFICHEID=100002"; statement1.execute(sql); // 创建第二个Statement Statement statement2 = conn.createStatement(); sql = "select * from ES_T_SHOP_AFFICHE"; rs = statement2.executeQuery(sql); list = RowMapper.getForList(rs); System.out.println(list); ConnectionUtil.close(conn); } catch (SQLException e) { e.printStackTrace(); } } /** * PreparedStatement预编译测试<br> * 至于其他效果和Statement一样 */ public static void Test6() { try { Connection conn; conn = ConnectionUtil.getConnection(); // Statement[select] String sql = "select * from ES_T_SHOP_AFFICHE where AFFICHEID=? or AFFICHETITLE=?"; PreparedStatement preStat = conn.prepareStatement(sql); preStat.setInt(1, 100001); preStat.setString(2, "333"); ResultSet rs = preStat.executeQuery(); List<Map<String, Object>> list = RowMapper.getForList(rs); System.out.println(list); ConnectionUtil.close(conn); } catch (SQLException e) { e.printStackTrace(); } } }
2.测试结果
(1)一个连接Connection可创建多个Statement
(2)一个Statement可连续执行多个SQL命令
(3)针对查询,一个Statement只能返回一个结果集,并且不能在执行其他SQL之后再使用之前获得的结果集
相关推荐
JAVAJDBC基础.pdf
Java JDBC编程总结 Hibernate、TopLink等OR Mapping操作数据库的技术都是建立JDBC技术之上的,实际来说,他们的性能和JDBC是有很大...暂且不说这些孰优孰劣的话了,再次主要是对Java的基础技术做个总结,以加深认识。
重难点之JAVAJDBC基础.pdf
JAVA数据库编程JDBC 与 Java数据库接口JDBC入门基础讲座 与 JDBC API数据库编程实作教材-程序设计-JAVA JDBC全压缩包.rar
学习java DAO JDBC 基础代码,客户购买物品和订单事件
java基础JDBC连接Mysql数据库。
教程名称: 【动力节点】Java经典教程_JDBC视频教程 本套Java视频教程中讲解了Java编程语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了...
jdbc基础教材 数据库操作基础知识 入门书籍
java环境下的JDBC编程基础,详细说明JDBC工作原理及代码实现
帮助java初学者学习JDBC,提供一个简单的demo供大家下载
JDBC扩展包,其中包含基础包和拓展包,支持jdbc与数据库交互的更多功能,亲测可用,各jar包间无冲突
Java中JDBC增删改查相关基础练习的实例源代码
Java JDBC(Java Database Connectivity)是Java编程语言中用于与数据库进行交互的标准API。下面是使用Java JDBC进行数据库操作的基本步骤: 加载数据库驱动程序。 建立数据库连接。 创建和执行SQL语句。 处理结果集...
java链接数据库的常用方法-- JDBC。 基本的JDBC知识介绍和使用。 可快速入门,也可当手册使用。 另外,最后还有一个JDBC工具类,以供使用。
JavaEE的知识点,包括servlet,jdbc,js,ssh框架的基础,原理。 收集总结了许多学长面试不同公司时面到的实际面试题。以及分享了回答问题的经验。 自己在去年10月份校招时,感觉有点用,特别是在给自己查漏补缺方面...
Java高级教程课件 java数据库教程 JDBC教程 2-oracle基础(1)(共48页).ppt Java高级教程课件 java数据库教程 JDBC教程 2-oracle基础(2)(共48页).ppt Java高级教程课件 java数据库教程 JDBC教程 3-oracle查询和SQL...
完整版精品java课件 Java基础入门教程 Java程序设计 第10章 JDBC数据库编程(共21页).ppt 完整版精品java课件 Java基础入门教程 Java程序设计 第11章 图形用户界面1(共27页).ppt 完整版精品java课件 Java基础入门...
JAVA_3 JAVA语言基础 位运算 JAVA_3 JAVA语言基础 JAVA_4 Java面向对象特性 JAVA_5 高级语言特征 JAVA_6 异常处理Exceptions JAVA_7 IO输入输出 JAVA_8 AWT图形界面编程 JFC AWT Swing JAVA_8 AWT图形界面编程 JFC ...
完整版 Java基础入门教程 Java程序语言设计 07 网络编程 JDBC(共21页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络编程 反射机制(共23页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络编程...
helloworld-java-jdbc java jdbc基础 添加