createStatement(int resultSetType, int resultSetConcurrency)参数意义
2007-09-25 12:51
423 查看
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); //将指针返回至第一条记录
接着来看看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)也具有相同的参数意义。
相关文章推荐
- createStatement(int resultSetType, int resultSetConcurrency)参数意义
- createStatement(int resultSetType,int resultSetConcurrency)
- java.sql.Connection.creatStatement(int resultSetType,int resultSetConcurrency)中参数的含义
- java ResultSet 结果集处理 createStatement() 里参数的意义(第一弹)
- JDBC 查询的三大参数 setFetchSize prepareStatement(String sql, int resultSetType, int resultSetConcur)
- conn.createStatement(Result.TYPE_SCROLL_INSENITIVE, ResultSet.CONCUR_READ_ONLY);
- createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);参数解释
- int APIENTRY WinMain( )函数的参数意义
- createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);参数
- conn.createStatement参数意义
- createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);参数
- int main(int argc,char *argv[])中参数的意义
- 关于java中createStatement中三个参数用法以及resultset的其余三个常量
- SweepGradient扫描渐变的(float cx, float cy, int[] colors, float[] positions)参数的意义
- RepositionBars的用法和参数的意义
- TensorFlow中与卷积核有关的各参数的意义
- java bean中空的构造方法和有参数的构造方法意义
- setsockopt中参数之SO_REUSEADDR的意义
- 无法确定 <E>E 的类型参数;对于上限为 int,java.lang.Object 的类型变量 E,不存在唯一最大实例
- bash shell——与if条件相关的参数意义