JDBC Review 2

6. 通过Metadata查询数据库信息
有两种Metadata,一种是数据库的:
DatabaseMetaData meta = conn.getMetaData();
通过它可以查询一些数据库的信息,例如:
ResultSet mrs = meta.getTables(null, null, null, new String[] { "TABLE" });
另外一种是返回结果集的:
ResultSet mrs = stat.executeQuery("SELECT * FROM " + tableName);
ResultSetMetaData meta = mrs.getMetaData();
可以查询结果集的字段信息。

7. 结果集
使用一般的ResultSet时有一个缺点,就是它必须保持数据库的连接,在有些情况下就不是很方便。这时就可以使用一些其它类型。
在javax.sql.rowset包中,有几种不同的类:
CachedRowSet:
可以直接作为ResultSet使用,也可以从ResultSet中取得所有数据(用populate方法)。修改了其中的数据之后,修改数据并不是立即返

回到数据库中,必须调用方法rowset.acceptChanges(conn)或是rowset.acceptChanges();如果在rowset中已经指定了连接,就

不用把连接传入方法中。

如果用populate方法取得数据,rowset并不能知道要修改的表的名称,这时必须用setTable方法设定

WebRowSet:
可以将数据存入XML文件中,然后用另一个对象把这个文件打开

FilteredRowSet,JoinRowSet
可以使用一些类似于select, join的操作

8. 事务处理
首先关掉连接的自动提交功能:
conn.setAutoCommit(false);
然后就和正常使用一样:
Statement stat = conn.createStatement();
执行不同的操作:
stat.executeUpdate(command1);
stat.executeUpdate(command2);
stat.executeUpdate(command3);
最后提交:
conn.commit();
如果有错误发生:
conn.rollback();

在事务中也可以设置一些savepoint,这样回滚的时候就可以控制回滚的地点
stat.executeUpdate(command1);
Savepoint svpt = conn.setSavepoint();
stat.executeUpdate(command2);
if (. . .) conn.rollback(svpt);
. . .
conn.commit();

9. 在做一些大批量的数据处理时,可以使用批量处理
stat.addBatch(command);
int[] counts = stat.executeBatch();
另外也可以把批量处理加入到一个事务中去。要注意的是批量处理不能处理select语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值