Jdbc执行sql语句
来源:互联网 发布:angularjs淘宝购物车 编辑:程序博客网 时间:2024/05/02 01:50
通过JDBC连接Oracle数据库中的十大技巧
1、在客户端软件开发中使用Thin驱动程序
2、关闭自动提交功能,提高系统性能 在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能,如下所示:conn.setAutoCommit(false); 值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。
3、在动态SQL或有时间限制的命令中使用Statement对象
在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。 此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。
4、利用PreparedStatement对象提高数据库的总体效率在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。 5、在成批处理重复的插入或更新操作中使用PreparedStatement对象 如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch(): PreparedStatement pstmt3D null; try { ((OraclePreparedStatement) pstmt).setExecuteBatch(30); ... pstmt.executeUpdate(); } 调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。 String sql = "select fee from CWJH_FEE_TOTAL_T t where AREA_ID=? and TIMESTAMP=?"; Connection connection = dbmgr.getConnection(); PreparedStatement statement = connection.prepareStatement(sql); // Statement statement = connection. createStatement (); 两种方式 // ResultSet rs = statement.executeQuery(sql); statement.setInt(1, areaid); statement.setString(2,timestamp); ResultSet rs = statement.executeQuery(); double fee = 0; if(rs.next())fee = rs.getDouble(1); statement.close(); rs.close();
- Jdbc执行sql语句
- JDBC执行SQL语句
- JDBC之执行SQL语句
- 关于JDBC(二)--- 执行SQL语句
- JDBC:PreparedStatement预编译执行SQL语句
- 通过jdbc连接数据库,批量执行多条SQL语句
- JDBC进阶之PreparedStatement执行SQL语句(MySQL)
- java中JDBC执行静态的sql语句
- JDBC中将一个变量加入SQL语句执行
- jdbc 链接mysql执行sql语句出现中文乱码问题
- [疯狂Java]JDBC:PreparedStatement预编译执行SQL语句
- [疯狂Java]JDBC:PreparedStatement预编译执行SQL语句
- JDBC编程步骤与执行SQL语句的方式
- java基础巩固---jdbc接口PreparedStatement执行sql语句
- JDBC PreparedStatement高级特性:批量执行sql语句
- Jmeter JDBC request执行多条sql语句
- JDBC学习笔记(3)—Statement执行SQL语句
- JDBC学习笔记(4)—PreparedStatement执行SQL语句
- 自己动手写操作系统的理由
- php中判断自定义方法是否存在
- asp.net 4种事务
- PHP中全局变量的使用
- asp.net Request.ServerVariables 各参数说明集合
- Jdbc执行sql语句
- 人生三重界---看山不是山,看水不是水
- 转--CD4000/74系列数字集成电路简介
- 研究能力的几个层次
- PHP显示出错提示的三种方法
- c语言中main函数的参数int argc,char *argv[]
- 想办假证儿的看过来——Leo网上答疑(55)
- mysql如何备份数据库
- CString 和 const char* 的相互转化(UNICODE)