Connection接口的createStatement方法,可用来创建向数据库发送SQL语句的对象,用于执行SQL语句。
常用代码:
Statement stmt = con.createStatement(); Statement stmt = con.createStatement (int resultSetType,int resultSetConcurrency);
createStatement参数详解
resultSetType:结果集的类型
TYPE_FORWARD_ONLY告诉系统读取资料列时只向前卷动。
TYPE_SCROLL_SENSITIVE修改後马上反映在ResultSet中。
TYPE_SCROLL_INSENSITIVE修改後不反映在ResultSet中。
ResultSet包含一个指向数据当前行的指针,在最初得到ResultSet的时候,这个指针指向第一条数据之前,next方法会将指针移动至下一条记录。
TYPE_FORWARD_ONLY告诉系统读取资料列时只向前卷动,如有列id name sex age。在取得name列之后,将不能再返回获取id列的值;
TYPE_SCROLL_INSENSITIVE,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); //将指针返回至第一条记录
int resultSetConcurrency:结果集的同步类型
CONCUR_READ_ONLY:当前ResultSet对象只读,不能更新;
CONCUR_UPDATABLE:当前ResultSet可以更新。
在实际开发中,可以利用CONCUR_UPDATABLE参数来实时更新ResultSet中的数据如:
rs.absolute(5); // 移动rs指针至第5行数据 rs.updateString("NAME", "张军"); // 将该行name的值改为张军 rs.updateRow(); //更新数据源的数据
带三个参数的createStatement语句
createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
其中resultSetHoldability可选值是:
1、ResultSet.HOLD_CURSORS_OVER_COMMIT 表示修改提交时,不关闭ResultSet的游标
2、ResultSet.CLOSE_CURSORS_AT_COMMIT 表示修改提交时,关闭ResultSet的游标
对于查询操作,不带参数的方法createStatement(),
等同于第二种方法的createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY),
等同于第三种方法的createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT)
Statement stmt = Conn.createStatement(1004,1007);
这些参数名称都对应一个整数值:
TYPE_FORWARD_ONLY=1003
TYPE_SCROLL_INSENSITIVE=1004
TYPE_SCROLL_SENSITIVE=1005
CONCUR_READ_ONLY=1007
CONCUR_UPDATABLE=1008
createStatement带参数与不带参数的性能比较
对于一个比较复杂的sql语句,createStatement加不加参数需要的时间到底是多少呢?
st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
开始时间:Sat Jun 28 15:33:47 CST 2014
结束时间:Sat Jun 28 15:33:53 CST 2014 ps:7秒左右,数据大概120条
st = conn.createStatement();
开始时间:Sat Jun 28 15:36:21 CST 2014
结束时间:Sat Jun 28 15:36:22 CST 2014
开始时间:Sat Jun 28 15:36:30 CST 2014
结束时间:Sat Jun 28 15:36:30 CST 2014 ps:1秒不到,数据120条
看到这里,我果断去掉了参数。
125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/2812.html