JDBC批量处理与结果集
一, 概论
Statement的execute()等方法一次只能执行一条SQL语句,如果同时有多条SQL语句要执行的话,可以使用addBatch()方法将要执行的SQL语句加入进来,然后执行executeBatch()方法,这样就可以在一次方法调用中执行多条SQL语句,以提高执行效率。
为了保证这一批语句要么全部成功,要么全部失败,应该把批处理放置在事务中进行。
使用PreparedStatement也可以进行批处理。
简单地说,JDBC可做三件事:与数据库建立连接、发送 SQL 语句并处理结果。
二, 实例
首先建立数据库表:test.student。
可以使用如下语句创建该表:
CREATE DATABASEtest;
USE test;
CREATE TABLEstudent (
id INT(4) NOT NULL auto_increment,
name VARCHAR(20) default NULL,
myclass VARCHAR(20) default NULL,
score INT(3) default 0,
PRIMARY KEY (id)
)
下面通过MyEclipse编写一段Java代码来实现对student表的相关操作。
在该工程下建一个名为jars的文件夹,把MySQL的驱动程序(jar包)放进去,然后右键单击该jar文件,在弹出的快捷菜单中选择“buildpath”命令下的“add to build path”命令
创建DoInsert类和DoSelect类实现数据的插入和查询,并验证数据。
PreparedStatement表示预编译的SQL语句的对象。
实例——prepdemo:根据传入不同的id查询学生信息。
对获得Connection对象进行封装
将数据库的配置信息写到一个属性文件中,然后用IO流去获取,当需要修改数据库连接的时候只要改动配置文件即可。
在src下新建属性文件jdbc.properties,添加如下内容:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root
三,对关闭JDBC资源类的封装
新建DbClose.java类,添加方法关闭结果集对象、语句对象、连接对象。
在执行增加、删除、修改的时候可以使用代码关闭连接:DbClose.close(Statement stmt, Connectionconn);
在执行查询之后使用如下代码关闭连接:DbClose.close(ResultSet rs, Statement stmt,Connection conn);
对执行数据库操作类的封装
在一个程序中会有很多地方要操作数据库,那么对执行数据库操作同样需要修改。新建ControlDB.java
四, 小结ResultSetMetaData结果集元数据
简单地说,JDBC可做三件事:与数据库建立连接、发送 SQL 语句并处理结果。批处理中执行的语句只能是更新语句(insert、delete、update),否则会抛出异常。
ResultSet用来表示查询到的数据,而ResultSetMetaData表示的是所查询到的数据背后的数据描述——如表名称、列名称、列类型等。
ResultSetMetaData提供了很多的方法,用来获取查询到的数据集的描述数据。
– rsm.getCatalogName(i);
– rsm.getColumnClassName(i);
– rsm.getColumnDisplaySize(i);
– rsm.getColumnLabel(i);
– rsm.getColumnName(i);
– rsm.getColumnType(i);
– rsm.getColumnTypeName(i);
– rsm.getPrecision(i);
– rsm.getSchemaName(i);
– rsm.isAutoIncrement(i);
– rsm.isCurrency(i);
– rsm.isNullable(i);
– rsm.isReadOnly(i);
– rsm.isSearchable(i);