我是靠谱客的博主 活泼高跟鞋,最近开发中收集的这篇文章主要介绍JDBC学习笔记(4)之PreparedStatement、ResultSetMetaData、数据库连接池的概念性知识,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PreparedStatement: :预编译的Statement对象,是Statement的子接口;

因此,Statement中实现的方法PreparedStatement也可以调用,PreparedStatement还可以预编译SQL语句,预编译的SQL语句存储在PreparedStatement对象中,可以使用该对象多次高效的执行该语句。

PreparedStatement较Statement多的好处:

(1)PreparedStatement预编译SQL语句,性能更好;

(2)PreparedStatement不需“拼接”SQL语句,编程更简单方便;

(3)PreparedStatement可以防止SQL注入,安全性更好;


ResultSetMetaData:ResultSet 里包含一个 getMetaData() 方法,该方法返回该ResultSet 对应的 ResultSetMetaData 对象。一旦获得了ResultSetMetaData 对象,就可通过 ResultSetMetaData 提供的大量的方法来返回 ResultSet 的描述信息

常用方法:

(1)int getColumnCount():返回该ResultSet的列数量;

(2)String getColumnName(int column):返回指定索引的列名;

(3)int getColumnType(int column):返回指定索引的列类型。

 CHAR = 1,DOUBLE = 8,FLOAT =  6,INTEGER  =  4,VARCHAR = 12......


批量更新
(1)JDBC 还提供了一个批量更新的功能,使用批量更新时,多条 SQL 语句将会被作为一批操作被同时收集、并同时提交。
 (2)批量更新必须得到底层数据库的支持,可以通过调用DatabaseMetaData 的 supportsBatchUpdates 方法来查看底层数据库是否支持批量更新。
(3) 使用批量更新也需要先创建一个 Statement 对象,然后利用该对象addBatch 方法将多条 SQL 语句同时收集起来,最后调用 Statement 对象的 executeBatch 同时执行这些 SQL

注意:executeBatch只是把sql语句一次性提交到服务器,但是服务器运行sql语句仍是一句一句执行,利用conn.commit()可实现一次性执行,不过conn.AutoCommit()默认true;必须设置为false,不过此设置危险性较大,一旦onn.AutoCommit()设置为false,每次执行sql语句后,都得conn.commit()!


数据库连接池
 数据库连接池的解决方案是:当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池。每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接使用,使用完后,不再关闭数据库连接,而是直接将该连接归还给连接池。通过使用连接池,将大大提高程序运行效率。

数据库连接池的常用参数有如下:
(1)数据库的初始连接数;setInitialPoolSize()
(2) 连接池的最大连接数;setMaxPoolSize()
(3)连接池的最小连接数;setMinPoolSize()
(4) 连接池的每次增加的容量;setAcquireIncrement();


两种常见的开源数据源
(1)DBCP 是Apache 软件基金组织下的开源连接池实现,该连接池依赖该组织下的另一个开源系统:common-pool
(2)相比之下 ,C3P0 数据源性能更胜一筹,Hibernate 就推荐使用该连接池。C3P0 连接池不仅可自动清理不再使用的Connection ,还可以自动清理Statement 和ResultSet 。C3P0 连接池需要版本为1.3 以上的JRE ,推荐使用1.4 以上的JRE 。


使用开源数据源需要导入相应的包。

最后

以上就是活泼高跟鞋为你收集整理的JDBC学习笔记(4)之PreparedStatement、ResultSetMetaData、数据库连接池的概念性知识的全部内容,希望文章能够帮你解决JDBC学习笔记(4)之PreparedStatement、ResultSetMetaData、数据库连接池的概念性知识所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部