createStatement(int resultSetType, int resultSetConcurrency)参数意义
2009-05-21 10:31
148 查看
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)也具有相同的参数意义。
仔细地阅读了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); //将指针返回至第一条记录
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)也具有相同的参数意义。
相关文章推荐
- java.sql.Connection.creatStatement(int resultSetType,int resultSetConcurrency)中参数的含义
- createStatement(int resultSetType, int resultSetConcurrency)参数意义
- JDBC 查询的三大参数 setFetchSize prepareStatement(String sql, int resultSetType, int resultSetConcur)
- JDBC操作MySQL出现:This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, ...的问题解决
- createStatement(int resultSetType,int resultSetConcurrency)
- conn.createStatement参数意义
- con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
- java大量数据加载时resultSetType参数的设置 TYPE_FORWARD_ONLY
- ResultSet.createStatement参数问题
- createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)
- Strut2 的result-type参数详解
- 常用Java中response.setContentType参数
- response.setContentType()的作用及参数
- response.setContentType()的作用及参数
- response.setContentType()的作用及参数
- response.setContentType()的作用及参数
- response.setContentType()参数对应文件类型
- response.setContentType()的作用及参数
- response.setContentType()的作用及参数解释
- struts2---The content of element type "package" must match "(result-types?,interceptors?,default-int