createStatement(int resultSetType, int resultSetConcurrency)参数意义

转载 2007年09月25日 12:51:00

createStatement(int resultSetType, int resultSetConcurrency)参数意义
仔细地阅读了j2sdk1.4.2文档以及http://java.sun.com/j2se/1.4.2/docs/api/上的文档,对java.sql.Connection.createStatement(int,int)有了一些体会。
根据j2sdk文档中的定义,resultSetType可以是ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE或者ResultSet.TYPE_SCROLL_SENSITIVE,resultSetConcurrency可以是ResultSet.CONCUR_READ_ONLY或者ResultSet.CONCUR_UPDATABLE。
所有的这些参数都是为即将得到的ResultSet服务。我们知道ResultSet包含一个指向数据当前行的指针,在最初得到ResultSet的时候,这个指针指向第一条数据之前。next方法会将指针移动至下一条记录。现在我们先来看看resultSetType参数的意义:
假设有表table1{
      id number,
      name varchar2(10)
}
TYPE_FORWARD_ONLY:ResultSet指针只能安装列顺序向前移动,也就是说在取得name列之后,将不能再返回获取id列的值;
TYPE_SCROLL_INSENSITIVE:ResultSet指针可以前后移动,INSENSITIVE表示不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反映出来;
TYPE_SCROLL_SENSITIVE:ResultSet指针可以前后移动,SENSITIVE表示及时跟踪数据库的更新,以便更改ResultSet中的数据。
在实际开发中,我们可以利用这些参数来方便地移动指针,比如:可以得到ResultSet的记录数
Statement stmt = con.createStatement(
                                      ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet. CONCUR_READ_ONLY);
       ResultSet rs = stmt.executeQuery("SELECT id, name FROM TABLE1");
       rs.last(); //移动到最后一行
       int rownum = rs.getRow(); //获得当前行的行号,即记录的条数
       rs.absolute(1);   //将指针返回至第一条记录
接着来看看resultSetConcurrency参数的意义:
CONCUR_READ_ONLY:表示当前ResultSet对象只读,不能更新;
CONCUR_UPDATABLE:表示当前ResultSet可以更新。
在实际开发中,我们可以利用CONCUR_UPDATABLE参数来实时更新ResultSet中的数据,更新有两种方式,第一种方式是更新当前数据行的数据,如:
       rs.absolute(5); // 移动rs指针至第5行数据
       rs.updateString("NAME", "daniel"); // 将该行name列的值更新为“daniel”
       rs.updateRow(); //更新数据源的数据
第二种方式是插入一行数据,如:
       rs.moveToInsertRow(); // 将指针移动至插入行,插入行是ResultSet对象中的特殊行
       rs.updateString(1, 2); // 更新插入行中第一列的值为2
       rs.updateInt(2, "daniel"); // 更新第二列中的值为daniel
       rs.insertRow();
       rs.moveToCurrentRow(); //将指针移动至插入之前的位置
其实这些参数名称都对应一个整数值:
TYPE_FORWARD_ONLY=1003
TYPE_SCROLL_INSENSITIVE=1004
TYPE_SCROLL_SENSITIVE=1005
CONCUR_READ_ONLY=1007
CONCUR_UPDATABLE=1008
 
同样的,java.sql.Connection.prepareStatement(String sql, int resultSetType, int resultSetConcurrency)也具有相同的参数意义。

 

prepareStatement介绍与使用

它表示预编译的SQL语句的对象,其中SQL语句被预编译并且存储在PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句。 例子: (1)PreparedStatement...
  • yingminxing
  • yingminxing
  • 2012年03月06日 20:38
  • 7827

java.sql.Connection.creatStatement(int resultSetType,int resultSetConcurrency)中参数的含义

resultSetType TYPE_FORWARD_ONLY告诉系统读取资料列时只向前卷动.TYPE_SCROLL_SENSITIVE修改後马上反映在ResultSet中.TYPE_SCROLL_I...
  • wx2001
  • wx2001
  • 2004年11月02日 23:27
  • 969

resultSetType resultSetConcurrency

java.sql.Connection.creatStatement(int resultSetType,int resultSetConcurrency)中参数的含义 resultSetTyp...
  • az44yao
  • az44yao
  • 2012年05月22日 18:13
  • 480

createStatement(int type,int concurrency

ConnectionName.createStatement(int  type,int  concurrency) 参数:Type-----决定了返回的语句在执行查询后的结果记录集,其记录指针移动方...
  • zj19880814
  • zj19880814
  • 2013年10月12日 14:13
  • 495

初学jsp留言板问题集

(1)org.apache.jasper.JasperException: Unable to compile class for JSP:     An error occurred at lin...
  • wclxyn
  • wclxyn
  • 2011年05月07日 20:01
  • 2532

_tmain(int argc, _TCHAR* ARGV[])下命令行参数用法

什么是命令行参数:在命令行中给定的参数就是命令行参数。(即从输入位置角度理解) 命令行参数的作用:让我们可以在程序之外控制程序,例如linux或者dos中我们经常使用的命令,从本质上来说就是一个程序;...
  • u013316305
  • u013316305
  • 2014年02月12日 12:46
  • 10797

createStatement带参数与不带参数的区别

下面是引用网上的文章,比较详细 1、createStatement(); 2、createStatement(int resultSetType, int resultSetConcurren...
  • niuzaiwenjie
  • niuzaiwenjie
  • 2014年06月28日 15:50
  • 1720

java大量数据加载时resultSetType参数的设置 TYPE_FORWARD_ONLY

这两天的工作是将一1000万条数据库记录(10GB)加载到内存中,加载到500多万条记录的时候,就报了OOM(内存不足)。解决了所有外围问题后,再运行还是这个问题无法加载全部数据。仔细研究了之前从未碰...
  • 10km
  • 10km
  • 2015年12月25日 18:04
  • 1198

onScrollChanged()方法解析

onScrollChanged()方法 onScrollChanged(int l, int t, int oldl, int oldt) This is called in respon...
  • fngy123
  • fngy123
  • 2015年01月09日 19:58
  • 4968

int main(int argc, char* argv[])参数意义

对下面两个网址涉及的内容理解:main函数不能被其他函数调用,它的参数值是从操作系统命令行上获得的。 当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传送到mai...
  • zhangchunbo135246
  • zhangchunbo135246
  • 2017年04月12日 16:26
  • 137
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:createStatement(int resultSetType, int resultSetConcurrency)参数意义
举报原因:
原因补充:

(最多只允许输入30个字)