不同数据库下的可更新结果集问题

来源:互联网 发布:淘宝补单靠谱吗? 编辑:程序博客网 时间:2024/05/19 17:56

前言

首先需要清楚什么是可更新结果集概念:通俗点来讲就是,sql查询结果集是否是可以更新的。【关于结果集的类型,此处不做详细介绍】

正文

首先看以下代码片段:

PreparedStatement ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SNESITIVE, ResultSet.CONCUR_UPDATABLE);//示例参数ps.setParam(1, value);ps.setParam(2, value);//查询ResultSet rs = ps.executeQuery();//更新结果集if(re.next()) {//更新值rs.updateInt(1, 999);rs.updateString(2, "xxx");//更新行rs.updateRow();}
对于这样的一处代码块,实现结果集更新,有几点需要注意:

1. 查询sql避免使用select * 的形式,写明查询字段

2. 查询sql避免表关联

另,对于不同的数据库,又稍有区别:

1. oracle

oracle在查询的时候,会默认rowid来区分记录行,所以可以不用在查询sql中显式的查询表主键,就可以实现更新

2. mysql

mysql查询时,没默认标识,需显式的查出表主键,以实现更新

3. sql server

sql server在查询的时候,通过测试,也有默认机制,可以不显式的查出主键字段,就可以更新。但是没弄清楚具体默认机制,等待后续探究更新。


以上是关于可更新结果集,在不同数据库下的细微区分,做下记录,以便后续查看。

如有不对的地方,欢迎大家拍砖o(∩_∩)o

1 0
原创粉丝点击