Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

SQLでデータが取得できない

このbeanだけSQLの結果を取得できなく悩んでいます。
些細なミスのような気もしますが、何度も見直したりlogを入れてみたりして試したんですが、どうしても間違っている箇所がわかりません。
よろしくお願いします。

ちなみに、他のPGではSQL接続できていますので、DBとの接続部分は問題ないと思われます。

また、このSQLをlogで吐き出したものをObjectBrowserで実行したところ、きちんと結果が返されたのでデータはあります。

resultSet.next()をlogで吐き出したところfalseと返されるので、1件もSQLの結果がないといわれているようです。

java1.6
eclipse
apache
tomcat



/**
 * DPC統計出力情報取得
 *
 * @return 成功:true 失敗:false
 */
public boolean getDpcToukei1Data() throws SystemException{

    log.info(ipAddress + " - " + "getDpcToukei1Data() START");

    ResultSet    resultSet     = null;
    Statement    stmt         = null;
    Connection    conn         = null;
    DataSource    dataSource     = null;
    boolean     rc             = false;
        
    int strBi    = Integer.parseInt(strNengetsu,10)*100 + 1;
    int endBi    = Integer.parseInt(endNengetsu,10)*100 + 99;
        
    try{
    dataSource = (DataSource) DataSourceFactory.getDataSource();
    conn = dataSource.getConnection();
    }catch(SQLException e){
    log.error(ipAddress + " - " + "SQL接続エラー:(" + e.toString() + ")");
    throw new SystemException("errors.system.exception","SQL接続エラー:(" + this.getClass() + ")<br>(" + e.toString() + ")");
    }

    try{

        StringBuffer sqlBuffer = null;

        sqlBuffer = new StringBuffer();
        
        sqlBuffer.append("select");
        sqlBuffer.append("     NVL(dpc.KA,' ') as KA_CD");
        sqlBuffer.append("    ,NVL(ka.KA_NAME,' ') as KA_NAME");
        sqlBuffer.append("    ,NVL(sum(kanja.PATIENT_SEX),0) as KENSU ");
        sqlBuffer.append("    ,NVL(sum(DECODE(kanja.PATIENT_SEX, '1',1, 0)),0) as MANKENSU");
        sqlBuffer.append("    ,NVL(sum(DECODE(kanja.PATIENT_SEX, '2',1, 0)),0) as WOMANKENSU");
        sqlBuffer.append("    ,NVL(sum(dpc.LOS),0) as LOS");
        sqlBuffer.append("    ,NVL(sum(dpc.GOKEITENSU),0) as HOKATSUGAKU");
        sqlBuffer.append("    ,NVL(sum(e.KOITENSU),0) as DEKIDAKAGAKU ");
        sqlBuffer.append(" from");
        sqlBuffer.append("     SUMDPC dpc ");    
        sqlBuffer.append("    ,SUMPATIENT kanja ");    
        sqlBuffer.append("    ,KAMST ka");
        sqlBuffer.append("    ,(select DATASHIKIBETSUNO ");
        sqlBuffer.append("            ,SUM(KOITENSU) as KOITENSU ");
        sqlBuffer.append("            ,SHINRYOKAKBN ");            
        sqlBuffer.append("        from DPC_EFILE ");
        sqlBuffer.append("       where NENTSUKI between " + strNengetsu + " and " + endNengetsu);
        sqlBuffer.append("       group by DATASHIKIBETSUNO, SHINRYOKAKBN ");
        sqlBuffer.append("     ) e ");
        sqlBuffer.append(" where");
        sqlBuffer.append("        dpc.PATIENT_NO        = kanja.PATIENT_NO");
        sqlBuffer.append("    and    kanja.KANJA_NO        = e.DATASHIKIBETSUNO(+)");
        sqlBuffer.append("    and    dpc.KA                = ka.KA_CD ");
        sqlBuffer.append("    and    ka.SEI_KA_CD           = e.SHINRYOKAKBN");
        sqlBuffer.append("  and dpc.ADM_DATE between " + strBi + " and " + endBi);
        sqlBuffer.append(" group by dpc.KA, ka.KA_NAME");
        sqlBuffer.append(" order by dpc.KA ");
            
        if(log.isDebugEnabled()){
            log.debug(ipAddress + " - " + "sql = (" + sqlBuffer.toString() + ")");
        }

        stmt = conn.createStatement();
        resultSet = stmt.executeQuery(sqlBuffer.toString());
log.debug(resultSet.next());
        int count=0;
        while(resultSet.next()){

        DpcToukei1StateBean DpcToukei1StateBean = new DpcToukei1StateBean();
                
        //診療科
        DpcToukei1StateBean.setKaCd(ItsUtil.toMS932(resultSet.getString("KA_CD")).trim());
        DpcToukei1StateBean.setKaName(ItsUtil.toMS932(resultSet.getString("KA_NAME")).trim());
                
        //件数
        DpcToukei1StateBean.setKensu(ItsUtil.toMS932(resultSet.getString("KENSU")).trim());
        DpcToukei1StateBean.setMan(ItsUtil.toMS932(resultSet.getString("MANKENSU")).trim());
        DpcToukei1StateBean.setWoman(ItsUtil.toMS932(resultSet.getString("WOMANKENSU")).trim());
                
        //在院日数
        DpcToukei1StateBean.setZaiinNissu(ItsUtil.toMS932(resultSet.getString("LOS")).trim());
                
        //包括請求額                
            DpcToukei1StateBean.setHokatsuSeikyu(ItsUtil.editNumber(1,ItsUtil.toMS932(resultSet.getString("HOKATSUGAKU")).trim()));
                
            //出来高請求額
            DpcToukei1StateBean.setDekidakaSeikyu(ItsUtil.editNumber(1,ItsUtil.toMS932(resultSet.getString("DEKIDAKAGAKU")).trim()));
                
            //差額
            DpcToukei1StateBean.setSagaku(ItsUtil.editNumber(1,Integer.toString(resultSet.getInt("HOKATSUGAKU") - resultSet.getInt("DEKIDAKAGAKU"))));
                
            //1日あたりの包括請求額
           DpcToukei1StateBean.setHokatsuSeikyu1nichi(ItsUtil.editNumber(1,Integer.toString(resultSet.getInt("HOKATSUGAKU")/resultSet.getInt("LOS"))));
                
            //1日あたりの出来高請求額
            DpcToukei1StateBean.setDekidakaSeikyu1nichi(ItsUtil.editNumber(1,Integer.toString(resultSet.getInt("DEKIDAKAGAKU")/resultSet.getInt("LOS"))));

        put(Integer.toString(count), DpcToukei1StateBean);
                
        rc = true;
        count++;
                
    }


}catch(SQLException e){
        log.error(ipAddress + " - " + "DPC統計1出力情報の取得エラー:(" + e.toString() + ")");
        throw new SystemException("errors.system.exception", "DPC統計1出力情報の取得エラー:(" + this.getClass() + ")<br>(" + e.toString() + ")");
    } finally {

    try{
        if (stmt != null) {
            stmt.close();
        }
        if (resultSet != null) {
            resultSet.close();
        }
        if (conn != null) {
            conn.close();
        }
    }catch(SQLException e){
        log.error(ipAddress + " - " + "SQLクローズエラー:(" + e.toString() + ")");
        throw new SystemException("errors.system.exception", "SQLクローズエラー:(" + this.getClass() + ")<br>(" + e.toString() + ")");
    }
}


return rc;        

}

1

回答

85961

閲覧

1件の回答

評価

0

データが取れるものと、つないでる先が違うんじゃないの。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。