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));
            }

        }

  • 相关阅读:
    配置 dovecat 的 PAM
    通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃
    路由器漏洞复现分析第二弹:CNVD-2018-01084
    路由器漏洞复现分析第三弹:DVRF INTRO题目分析
    重新认识被人遗忘的HTTP头注入
    [转载]DLL劫持生成器 源码开放(纯WINDOWS SDK)+ 实例分析
    HOOK大法实现不修改程序代码给程序添加功能
    老树开新花:DLL劫持漏洞新玩法
    分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace
    网易云音乐PC客户端加密API逆向解析
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/585547.html
Copyright © 2011-2022 走看看