`
langgufu
  • 浏览: 2306924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jdbc connection是否可以创建多个statement

阅读更多

关于Statement对象:
  前面说过,Statement对象是用来绑定要执行的操作的,在它上面有三种执行方法:
即用来执行查询操作的executeQuery(),用来执行更新操作的executeUpdate()和用来执行
动态的未知的操作的execute().
  JDBC在编译时并不对要执行的SQL语句检测,只是把它看着一个String,只有在驱动
程序执行SQL语句时才知道正确与否.
  一个Statement对象同时只能有一个结果集在活动.这是宽容性的,就是说即使没有
调用ResultSet的close()方法,只要打开第二个结果集就隐含着对上一个结果集的关闭.所以
如果你想同时对多个结果集操作,就要创建多个Statement对象,如果不需要同时操作,那么可
以在一个Statement对象上须序操作多个结果集.
 
  这里我不得不特别说明一下,很多人会用一个Statement进行嵌套查询,然后就来问
我说为什么不能循环?道理上面已经说清楚了.我们来详细分析一下嵌套查询:
  Connection conn = null;
  Statement stmt = null;
  conn = .......;
  stmt = conm.createStatement(xxxxxx);
  ResultSet rs = stmt.executeQuery(sql1);
  while(rs.next()){
    str = rs.getString(xxxxx);
    ResultSet rs1 = stmt.executeQuery(\"select * from 表 where 字段=str\");
  }
当stmt.executeQuery(\"select * from 表 where 字段=str\");赋给rs1时,这时隐含的操作
是已经关闭了rs,你还能循环下去吗?
所以如果要同时操作多个结果集一定要让它他绑定到不同的Statement对象上.好在一个connection
对象可以创建任意多个Statement对象,而不需要你重新获取连结.

另外PreparedStatement还支持接收参数.在预编译后只要传输不同的参数就可以执行,大大
提高了性能.
   
  PreparedStatement ps = conn.prepareStatement(\"select * from 表 where 字段=?\");
  ps.setString(1,参数);
  ResultSet rs = ps.executeQuery();
 
  CallableStatement:是PreparedStatement的子类,它只是用来执行存储过程的.
  CallableStatement sc = conn.prepareCall(\"{call query()}\");
  ResultSet rs = cs.executeQuery();

分享到:
评论

相关推荐

    JdbcConnection

    10. **事务管理**:JdbcConnection项目可能涉及事务操作,比如多个数据库操作作为一个原子单元。通过`Connection`对象的`setAutoCommit(false)`关闭自动提交,然后在所有操作成功后调用`commit()`,或者在发生错误时...

    JDBC(用PrepareStatement实现)

    Java Database Connectivity (JDBC) 是Java平台中的一个标准API,用于在Java应用程序和各种数据库之间建立桥梁。它允许Java开发者执行SQL语句,进行数据查询、更新和删除等操作。在实际开发中,为了提高效率和安全性...

    JDBC PrepareStatement 使用(附各种场景 demo)

    连接建立后,可以创建Statement或PrepareStatement对象来执行SQL命令。 PrepareStatement相比Statement的主要优势在于预编译。预编译的SQL语句在首次执行时会被数据库解析并生成执行计划,后续的重复调用只需传入...

    怎样实现关闭connection时自动关闭Statement和ResultSet (下篇)

    从JDBC 4.1开始,Statement的`closeOnCompletion()`方法会在执行的SQL语句完成时自动关闭Statement,而Connection实现的`AutoCloseable`接口使得它们可以被包含在try-with-resources语句中。 使用try-with-...

    jdbc jdbc jdbc

    6. **批处理(Batch Processing)**:对于需要执行大量相似SQL语句的情况,JDBC提供批处理功能,允许一次发送多个SQL语句,从而提高效率。 7. **JDBC URL**:每个数据库驱动都有一个特定的JDBC URL格式,用于标识要...

    jdbc的多个pdf帮助文档

    2. **JDBC基本步骤**:使用JDBC通常包括加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句、处理结果集、关闭资源等步骤。 3. **Connection对象**:代表数据库的会话,用于执行SQL语句和管理...

    自学jdbc心得体会

    3. 创建一个Statement(发送SQL) 4. 执行SQL语句 5. 处理SQL结果(SELECT语句) 6. 关闭Statement 7. 关闭连接Connection 注意:6、7两个步骤势必须要做的,因为这些资源是不会自动释放的,必须要自己关闭。 四、...

    jdbc.zip_java jdbc_java+jdbc_jdbc_jdbc Java_zip

    客户端可能会使用JDBC API建立与服务器的连接,创建Statement或PreparedStatement对象,然后执行SQL语句。这些语句可以是SELECT、INSERT、UPDATE或DELETE,用于获取、添加、修改或删除数据库中的数据。 `Server....

    JDBC教程

    - **Connection**: 数据库连接对象,代表了一个到数据库的会话,可以创建Statement或PreparedStatement对象。 - **Statement**: 用于执行静态SQL语句,获取结果集。 - **PreparedStatement**: 预编译的SQL语句,支持...

    JDBC6和JDBC14

    3. **创建Statement或PreparedStatement对象**:根据需求选择Statement(用于执行静态SQL语句)或PreparedStatement(用于执行预编译的SQL语句,提供更好的安全性和性能)。 4. **执行SQL语句**:调用Statement或...

    sqljdbc和sqljdbc4 sqlserver最新驱动

    - 建立连接:`Connection conn = DriverManager.getConnection("jdbc:sqlserver://服务器地址:端口;databaseName=数据库名", "用户名", "密码");` - 创建Statement或PreparedStatement对象,用于执行SQL语句。 - ...

    JDBC使用的简单示例

    此外,还可以使用`Connection Pool`(连接池),在多个请求之间重用数据库连接,进一步提升效率。 在“sql_test”这个文件中,可能包含了一个测试用的SQL脚本或者是一个测试数据库的配置。你可以使用这些信息创建一...

    jdbc资料jdbc资料jdbc资料pdf

    ### JDBC核心知识点详解 #### 一、JDBC概念与作用 **JDBC**(Java Database ...通过上述介绍,我们可以看到JDBC不仅支持简单的数据库操作,还提供了高级特性如预编译的Statement,以满足更复杂的应用需求。

    jdbc教程_jdbc教程

    1. **批处理**:通过Statement对象的`addBatch()`和`executeBatch()`方法,可以将多个SQL语句作为一个批次执行,提高性能。 2. **使用PreparedStatement**:预编译SQL语句,减少解析次数,提升效率。 3. **设置合适...

    Mysql JDBC驱动 .zip_MYSQL_jdbc mysql_mysql jdbc_mysql jdbc driver_

    MySQL JDBC驱动有多个版本,需确保使用的驱动版本与MySQL服务器版本兼容。此外,根据应用需求,可能需要进行性能优化,如设置合适的连接超时、查询缓存等配置。 综上所述,MySQL JDBC驱动是Java开发者与MySQL数据库...

    用JDBC编写新闻页面

    JDBC是Java中的一个API,包含了多个接口和类,如`DriverManager`、`Connection`、`Statement`、`PreparedStatement`和`ResultSet`等。`DriverManager`负责管理数据库驱动,`Connection`代表了与数据库的连接,`...

    jdbc访问数据库的步骤

    `PreparedStatement`比`Statement`更安全且效率更高,因为它支持预编译SQL语句,可以防止SQL注入攻击,并且在执行多次相同操作时性能更好。 4. **执行SQL语句**:如果执行的是查询语句(如SELECT),则使用`...

    达内jdbc学习笔记

    总的来说,"达内jdbc学习笔记"涵盖了JDBC基础、数据库连接、SQL执行、结果集处理、事务管理和性能优化等多个关键知识点,对Java开发者来说是宝贵的参考资料。通过深入学习和实践,可以熟练地使用Java进行数据库操作...

    sqlserver驱动包 jdbc驱动 sqljdbc.jar和sqljdbc4.jar

    sqljdbc.jar是适用于Java SE 6及以下版本的驱动,而sqljdbc4.jar则是为Java SE 7及以上版本设计的,它支持更多的Java新特性,例如try-with-resources语句,可以更有效地管理和关闭数据库连接。 JDBC驱动是Java应用...

    JDBC数据库连接测试

    以上就是关于JDBC数据库连接测试的核心知识,通过学习这些内容,你可以创建一个简单的JDBC程序,实现对数据库的CRUD操作。在实际项目中,应结合连接池和异常处理机制,确保代码的健壮性和效率。

Global site tag (gtag.js) - Google Analytics