createStatement参数详解,带参数与不带参数的区别

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

(2)
江山如画的头像江山如画管理团队
上一篇 2018年10月23日 下午1:21
下一篇 2018年10月24日 上午9:02

99%的人还看了以下文章

  • JSP页面使用Servlet制作图形验证码

    本文给大家分享的是JSP验证码的制作,通过Servlet生成图形验证码,调用非常方便,希望对大家有所帮助。

    2022年12月1日
    1.1K0
  • Pillow-优秀的Python图像处理库安装及入门教程

    Pillow库是Python 图像处理库(Python image library)的一个派生分支,提供了广泛的文件格式(BMP,PNG,JPEG等)支持,提供基本的图像处理能力,如: 图像存储、图像显示、改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。 比起OpenCV库的图像处理,功能有限,但函数使用非常方便,大…

    2020年12月8日
    2.1K0
  • 上机三 Java Web应用程序设计

    建议学时:8 2学时 一、编写JSP页面date.jsp,格式化显示系统当前时间 需要使用Date类和SimpleDateFormat类。 在头部引入。 <%@ page import=”java.util.Date”%> <%@ page import=”java.text.SimpleDateFormat”%> SimpleDat…

    2018年9月11日
    10.5K1
  • 赞!python 生成词云详细教程-最简单的中文词云生成代码

    pip install wordcloud pip install jieba wordcloud生成词云 效果图: 代码: from wordcloud import WordCloud import matplotlib.pyplot as plt #绘制图像的模块 import jieba #jieba分词 path_txt=’d://西游.txt’ …

    2023年6月2日 编程开发
    1.3K2
  • 500 Internal Server Error 错误原因及解决方法(图)

    500 属于服务器内部错误。如果其他网站可以打开,就这一网站打不开,那是该网站的服务器出了问题,跟你的电脑无关,如果其他网页都打不开,你就试着用工具修复一下浏览器。 500内部服务器错误的一般原因是IIS服务器无法解析ASP代码。 如:ASP语法出错、ACCESS数据库连接语句出错,文件引用与包含路径出错、使用了服务器不支持的组件如FSO等。 如果在Wind…

    2018年7月2日
    25.0K0
  • HTTP错误 403.14 服务器配置为不列出此目录内容

    开发一个企业网站,使用ASP技术,在本地通过IIS管理器调试,出现 如下问题: HTTP 错误 403.14 – Forbidden Web 服务器被配置为不列出此目录的内容 解决方法: 在”功能视图“,中找到”目录浏览“,双击进入 在目录浏览右侧操作中选择”启用“! 这时再浏览网站,可以看到已经不报错了,但是网站是以文件目录的形式展现的! 这是…

    2018年7月3日 编程开发
    3.1K0

发表回复

登录后才能评论