概述
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、数据库连接池的概念性知识所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复