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之后再使用之前获得的结果集
相关推荐
Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它提供了一种标准化的方法,让程序员可以使用SQL语句访问数据库,而无需关心具体的数据库实现细节。在Java应用...
Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种关系数据库进行交互的一组标准API。JDBC使得Java开发者能够编写...JDBC是Java开发数据库应用的基础,也是许多企业级框架(如Spring JDBC)的基石。
#### 二、JDBC与ODBC的关系 ODBC(Open Database Connectivity)是一种基于C语言的数据库访问接口,而JDBC则是其Java版本,两者都旨在提供一种跨平台的数据库访问机制。然而,JDBC相比ODBC更进一步,它完全用Java...
JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的应用程序接口,它提供了一套统一的接口方法...通过这份笔记,读者可以掌握使用Java语言操作数据库的技能,为开发各类数据库应用打下坚实的基础。
Java JDBC(Java Database Connectivity)是Java平台中用于与各种数据库进行交互的标准API,它使得Java开发者能够编写数据库无关的代码,实现对数据的增、删、改、查操作。本项目模板提供了两种不同阶段的JDBC应用...
1. **JDBC API基础**: JDBC API包含一系列的接口和类,如`java.sql.DriverManager`、`Connection`、`Statement`、`PreparedStatement`、`ResultSet`等。`DriverManager`用于管理数据库驱动,`Connection`表示到...
【JDBC基础】 JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准Java API,它允许Java开发者在程序中执行SQL语句并与各种数据库进行交互。JDBC为Java程序员提供了一种统一的方式来连接和操作...
了解了这些基础知识,你可以开始使用Java JDBC与SQL Server进行数据交互了。记住,安全性和性能优化是开发过程中的重要考虑因素,比如使用预编译的`PreparedStatement`防止SQL注入,以及及时关闭结果集和数据库连接...
本示例将讲解如何使用Java JDBC连接MySQL数据库,这对于任何Java开发者来说都是基础且重要的技能。 首先,我们需要在项目中引入MySQL的JDBC驱动。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml ...
1. **Java JDBC基础** - **JDBC API**: 包含了`java.sql`包下的接口和类,如`Connection`、`Statement`、`PreparedStatement`、`ResultSet`等,它们提供了与数据库通信的基本方法。 - **数据库连接**: `...
"Java JDBC基础教材 数据库操作基础知识 入门书籍"这个资源可能包含以下内容: 1. JDBC基础概念和原理介绍。 2. 如何配置JDBC驱动和连接数据库。 3. SQL语言的基本操作,如选择、插入、更新和删除数据。 4. 使用`...
本项目"javajdbc宠物商店-Mysql数据库"是基于Java JDBC实现的一个宠物商店管理系统的数据库部分,它提供了与MySQL数据库交互的能力。在这个项目中,我们将深入探讨以下几个核心知识点: 1. **JDBC API**: JDBC API...
### JDBC基础 1. **JDBC驱动**:JDBC驱动是Java程序与数据库之间的桥梁,分为四种类型:Type 1(纯Java API,性能较低)、Type 2(混合Java和数据库供应商特定代码)、Type 3(完全基于网络的中间件)和Type 4(纯...
理解JDBC的基础对于任何Java开发者来说都是非常重要的,特别是在需要处理大量数据的场景中。 在数据库编程中,JDBC提供了以下核心功能: 1. **连接数据库**:JDBC允许Java应用程序通过`DriverManager.get...
本压缩包包含了三个重要组成部分:《JAVA数据库编程JDBC》、《Java数据库接口JDBC入门基础讲座》以及《JDBC API数据库编程实作教材》。这些资源将帮助初学者全面理解和掌握JDBC的基础知识和实践技巧。 《JAVA数据库...
本文将深入探讨SQLite的数据类型及其与Java JDBC连接SQLite的基础知识,并通过一个简单的Java例子程序来演示如何存取数据。 SQLite支持七种基本的数据类型,它们分别是: 1. NULL:表示空值,任何值都可以赋为NULL...
### JDBC基础 JDBC(Java Database Connectivity)是JAVA平台中用于与各种数据库进行通信的标准API。它允许开发者使用JAVA编写代码来连接和操作数据库。JDBC由一系列接口和类组成,其中包括`DriverManager`、`...
Java-JDBC基础讲义参考
#### 一、JDBC基础概述 JDBC(Java Database Connectivity)是一种标准的Java API,允许Java程序连接并操作各种类型的数据库。它为开发人员提供了一种统一的方式,以便使用相同的API来访问不同的数据库管理系统。 ...
Java JDBC(Java Database Connectivity)是Java编程语言中用于与数据库交互的一组接口和类,它提供了标准的方法来连接、查询和操作数据库。本实验旨在帮助初学者理解和掌握JDBC的基本用法,通过实际操作,让学习者...