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)也具有相同的参数意义。

 

相关文章推荐

linux c之main(int argc, char *argv[], char *envp[])参数意义

1、问题 我们常见的int main(int argc, char *argv[], char *envp[]) 各个参数的意义 2、代码 #include #include ...

C++基础积累 _tmain(int argc,_CHAR*arg[])参数的具体意义

原文链接:http://hi.baidu.com/quvia/item/9536d20a90b7f3eefe240d66   _tmain(int argc, _TCHAR* argv[])函数中第一...

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

int main(int argc,char * argv[]) argv为指针的指针 argc为整数   char **argv or: char *argv[] or: char arg...

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

摘自:http://www.cnblogs.com/flyfly/archive/2011/08/02/main_arguments.html       int main(int...

Int2Type的意义

在很多代码中看到 Int2Type这样的结构: template struct Int2Type { enum { value = v }; }; 以下笔记摘自:http://www....

详解mysql int类型的()中长度值代表的意义

mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢.以下是每个整数类型的存储和范围(来自mysql手册...

modern c++ design Int2Type的意义

template int v> struct Int2Type {     enum { value = v }; }; 如下: template&#...

int 13H参数详解

直接磁盘服务(Direct Disk Service——INT 13H)   00H —磁盘系统复位  01H —读取磁盘系统状态  02H —读扇区  03H —写扇区&...

指针、引用、一般变量(int 等)作为函数参数的结果对比

一般变量(int float double等)作为函数参数,如果想通过函数入口参数 回传给调用程序是不可行的

无法确定 <E>E 的类型参数;对于上限为 int,java.lang.Object 的类型变量 E,不存在唯一最大实例

在Eclipse中能够编译运行,同样的代码,使用ant编译会失败报错:无法确定 E 的类型参数;对于上限为 int,java.lang.Object 的类型变量 E,不存在唯一最大实例 通过在网上查找...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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