首页 > 编程语言 >注意:Java的ResultSet对象,默认是不可更新的!...

注意:Java的ResultSet对象,默认是不可更新的!...

时间:2023-01-25 22:05:00浏览次数:54  
标签:... Java rs 记录 ResultSet ONLY Statement 指针


  注意啊!Java的ResultSet对象,默认是不可更新的,仅有一个向前移动的指针,
因此,只能遍历它一次,并且只能按从第一行到最后一行的顺序进行。


如果需要ResultSet指针具有移动和可更新的特性,可以在使用createStatement()方法
获取Statement对象时指定一些参数。


//实例,获取ResultSet中含有的记录数量。


   在已获取ResultSet结果集的情况下,可以使用该对象的last()和getRow()方法取得
记录数量。


last()方法用于将指针指向最后一行记录。
getRow()方法用于返回当前指针所在的位置。


ResultSet默认情况下,只能使用next()方法向前逐行移动指针,不支持last()、first()、
以及absolute()等方法,如果要使用last()、absolute()等方法,必须在由Connection生成
Statement时指定相应的参数,格式如下:


Statement stmt =conn.ctrateStatement(游标类型,记录更新权限);


游标类型参数有以下几种:

ResultSet.TYPE_FORWORD_ONLY       //指针只可以向前移动

ResultSet.TYPE_SCORLL_INSENSITIVE //指针可滚动,但是不受其他用户
//对数据库更改的影响


ResultSet.TYPE_SCORLL_SENSITIVE //指针可滚动,当其它用户更改数据
//库时这个记录也会改变



记录更新权限有以下几种:


ResultSet.CONCUR_READ_ONLY //只读


ResultSet.CONCUR_UPDATABLE //可更新




createStatement()缺省参数等价于:


createStatement(ResultSet.TYPE_FORWORD_ONLY,ResultSet.CONCUR_READ_ONLY);




/


获取结果集ResultSet记录数量的代码如下:


//此处省略连接数据库的代码和变量的定义!...


Statement stmt =conn.createStatement(ResultSet.TYPE_SCOLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);


ResultSet rs =stmt.executeQuery("select * from Test");


if(rs.last()){
count =rs.getRow(); //返回当前指针所在的位置
}


System.out.println("记录数量为:"+count);




注:使用上述方法查询记录数量,在数据量很大时会出现内存溢出异常,因此不推荐使用。
要以使用SQL统计函数获取符合查询条件的记录数量,示例代码如下:


//此处省略连接数据库的代码和变量的定义!...

Statement stmt =conn.createStatement();


ResultSet rs =stmt.executeQuery("select * from Test");


if(rs.next()){
count =rs.getInt(1); //注:此处假设数据库中第一列数据类型为:自动编号
}


System.out.println("记录数量为:"+count);




/

标签:...,Java,rs,记录,ResultSet,ONLY,Statement,指针
From: https://blog.51cto.com/softo/6022986

相关文章

  • 注意:Java中Switch语句的参数类型-_-!...
    Java中不能将float和doublu类数据作为switch(...)中的表达式!其它语言有待验证-_-!...验证代码如下:publicclasstest{publicstaticvoidmain(String[]args){floatb......
  • C#输出SQL 2005表中所有记录!...
      主要代码如下:    //连接字符串stringstrConn="userid=sa;password=123456;initialcatalog=MyDb;Server=192.168.47.144,1433;ConnectTimeout=10";......
  • 用资源文件在C#程序中动态更换窗体背景...
    //呵呵,这是我看了VS2008窗体设计器生成的代码才发现的...//原来在代码中也可以动态更换背景图片哦!...//starSky为资源图片名称......
  • java获取用户输入的字符串!...
    importjava.util.Scanner;//导入输入类publicstaticvoidmain(String[]args){//创建输入对象Scannersc=newScanner(System.in);//获取用户输入的字......
  • 加速VS2008的启动速度!...
    1.去掉开始页打开VS2008,点->工具->选项,在选项中找到->启动设置->启动时:显示空环境即可!  2.去掉程序启动时的闪屏画面 右键点击V......
  • C#之结束指定进程!...
    主要代码如下://结束进程函数publicboolendProcess(StringstrPro){//创建进程数组,用于保存系统中所有的进程Process[]p=......
  • 循环的魅力之冰冻QQ电脑管家6.9...
    效果截图如下,程序运行后,管家已经动弹不了了...主要代码如下: for(unsignedintnHand=10000;nHand<99999999;nHand++){//获取窗口标题......
  • JSP六个动作详解...
    JSP中6个动作为:1.Include、 2.Forward、3.UseBean、 4.GetProperty、 5.SetProperty、6.Plugin。一、Include指令<jsp:include>标签表示包含一个静态的或者动态的文件......
  • html之给文本框设置宽度和高度...
    今天在访QQ空间登录界面时,感觉其文本框的宽度和高度都好大呀,截图如下:我很好奇其是怎么实现的,百度了一下,呵呵,其实不难嘛,代码如下:<inputname=""type=......
  • 函数的封装之获取进程句柄...
    现在写程序,经常要获取进程的句柄,为此我将它封装成了一个函数,呵呵,以后直接Copy就可以用了...HANDLEGetProHandle::getProcessHandle(CStringcaption){//用于保存指定窗口......