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

        }

  • 相关阅读:
    本机可以,服务器却不行
    学习摘录1Hello, World!
    钻石问题
    OPEN OFFICE使用技巧
    操作符的重载
    函数重载
    关于“结构”好别扭的一段话
    多重继承
    OPEN OFFICE操作技巧3
    70个现代风格的HTML5 WordPress主题网站
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/585547.html
Copyright © 2011-2022 走看看