zoukankan      html  css  js  c++  java
  • Statement

    在访问外部数据库(非Axapta数据库)的时候,要用到Connection和Statement以及ResultSet三个对象,要注意的是Statement和ResultSet这个对象,如果不认真读Axapta的帮助文档,按照以前的编程习惯可能会出些麻烦.看下面这段代码:
     Connection con;
        ResultSet rs;
        ResultSet rsDetail;
        Statement stat;
       

        ;
        con 
    = new Connection();
        stat 
    = con.createStatement();
       
        rs 
    = stat.executeQuery(strFmt("select * from basicdata.dbo.LedgerTable where dataAreaId = '%1'","ZB"));
        
    while(rs.next())
        
    {
            info(rs.getString(
    1));
            rsCredit 
    = stat.executeQuery(strFmt("select * from basicdata.dbo.LedgerTable where dataAreaId = '%1'","ZB"));
            
    while(rsCredit.next())
            
    {
                info( 
    "第二次循环:"+rsCredit.getString(1));
            }

        }

    按照ADO.NET编程习惯,应该rs和rsCredit分别循环,对应rs中的每一条记录,输出一遍rsCredit中的记录 .
    但实际情况是不管rs有多少条记录,第一个循环只会执行一次.看了Statement的帮助文档才知道,每个Statement对象只能对应一个ResultSet,在返回下一个ResultSet时会将上一个关掉,真是奇怪,执行一条语句就返回一个结果集,干吗非要把上一个关掉......
    解决办法就是如果ResultSet要嵌套,则用两个Statement分别对应不同的ResultSet,有些bt.
     Connection con;
        ResultSet rs;
        ResultSet rsDetail;
        Statement stat;
        Statement statCredit;

        ;
        con 
    = new Connection();
        stat 
    = con.createStatement();
        statCredit 
    = con.createStatement()
        rs 
    = stat.executeQuery(strFmt("select * from basicdata.dbo.LedgerTable where dataAreaId = '%1'","ZB"));
        
    while(rs.next())
        
    {
            info(rs.getString(
    1));
            rsCredit 
    = statCredit .executeQuery(strFmt("select * from basicdata.dbo.LedgerTable where dataAreaId = '%1'","ZB"));
            
    while(rsCredit.next())
            
    {
                info( 
    "第二重循环:"+rsCredit.getString(1));
            }

        }

  • 相关阅读:
    第三方登录(QQ登录)开发流程详解
    编译PHP并与Ngnix整合
    Ngnix的日志管理和用定时任务完成日志切割
    Ngnix 安装、信号量、虚拟主机配置
    Redis命令操作详解
    Redis的安装和部署
    消息队列
    Ubuntu中Google Chrome安装
    关于双系统下Ubuntu不能访问Windows中某个盘的问题
    numpy.random.shuffle()与numpy.random.permutation()的区别
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/585547.html
Copyright © 2011-2022 走看看