• 고객센터
  • 교육
  • 매뉴얼
  • 데모
  • 제품소개
조회 수 : 3030
2005.09.27 (17:45:34)
>게시판을 이용해 주셔서 감사합니다.
>다음양식에 맞게 입력해주세요.
>
>* 고객시스템명 : 광고통합관리 시스템
>* GAUCE 버전 : 닷넷 4.0
>* WAS 종류(WebLogic 등등) :
>* DB 종류 : 사이베이스
>* 문의 유형(질문/요청/참조) :
>* 내용 :
>
>string SelectSql = null;  
>OleDbTransaction trnew = null;
>
>// Transaction을 시작합니다.
>trnew = (OleDbTransaction) oConn.beginTransaction();
>
>SelectSql = "";
>//현재 사번의 삭제할 권한의 데이터를 가져온다.
>SelectSql = "SELECT a.idno,b.page_id FROM ua056tb a inner join ua096tb b " +
>                 " On a.comp_code = b.comp_code" +
>         " WHERE idno ='2222'" +
>         "     And th_gubun = '23'";
>                
>DataSet ds = objGBasePage.GauceDbHelper.buildDataSet(oConn, SelectSql, "Mytable");                
>
>//사용자별 권한 테이블에서 위 쿼리결과의 데이터를 삭제한다.
>foreach ( DataRow dr in ds.Tables[0].Rows )
>{
>        SelectSql = "";
>
>        SelectSql = "Delete From ua057tb " +
>                        " Where idno ='" + dr["idno"].ToString () + "'" +
>                        "   And page_id='" + dr["page_id"].ToString () + "'";
>
>        objGBasePage.execNonQuery(oConn, SelectSql, null, trnew);
>
>}                    
>
>위에서 코딩한것과 같이 트랜잭션을 걸고 Select쿼리를 날리면  아래와 같이 에러 메세지가 나타납니다.
>  
>DataSet ds = objGBasePage.GauceDbHelper.buildDataSet(oConn, SelectSql, "Mytable");    <==부분에서에러
>
>명령에 할당된 연결이 보류중인 로컬 트랜젹션에 연결되어 있는 경우 Excute를
>사용하려면 트랜젹션 개체가 필요합니다.
>
>DataSet ds = objGBasePage.GauceDbHelper.buildDataSet(oConn, SelectSql, "Mytable",trnew);면 될텐데...
>buildDataSet는 오버라이딩된게 없더라구요..
>트랜젹션 중간에 Select쿼리를 날릴수는 없나요?


님께서 말씀하신데로 현재는 buildDataSet에서는 Transaction을 사용할 수 없습니다.
위와 같은 경우에서는 다음의 두가지 방법으로 가능할 것 같습니다.

1. beginTransaction()의 위치를 변경합니다.
// Transaction을 시작합니다.
trnew = (OleDbTransaction) oConn.beginTransaction(); 부분을

DataSet ds = objGBasePage.GauceDbHelper.buildDataSet(oConn, SelectSql, "Mytable");  
이후에서 사용 하시면 될것 같습니다.

2. buildDataReader 메소드를 사용합니다.
OleDbDataReader dr = (OleDbDataReader) objGBasePage.GauceDbHelper.buildDataReader(oConn, SelectSql, null, trnew);  

//사용자별 권한 테이블에서 위 쿼리결과의 데이터를 삭제한다.
while(dr.Read())
{
    SelectSql = "";

    SelectSql = "Delete From ua057tb " +
                     " Where idno ='" + dr.GetString(GetColumnIndex(dr,"idno"))) + "'" +
                     "   And page_id='" + dr.GetString(GetColumnIndex(dr,"page_id"))) + "'";

    objGBasePage.execNonQuery(oConn, SelectSql, null, trnew);
}

// DataReader에서 입력한 컬럼명과 일치하는 컬럼의 인덱스를 가져온다.
private int GetColumnIndex(OleDbDataReader dr, string strColName)
{
    int iColumnIdx;
    for (iColumnIdx=0; iColumnIdx < dr.FieldCount; iColumnIdx++)
    {
        if(dr.GetName(iColumnIdx).CompareTo(strColName) == 0)
            break;
    }
    return iColumnIdx;
}
번호 제목 닉네임 조회 등록일
7449 호환성 보기 설정 이후에도 메뉴 깨짐 현상
kiarakim
8884 2017-02-15
7448 Shift DEMO 사이트 에서 IE11 다운됨
정성호
9142 2017-02-10
7447 엑셀 업로드 속도 문의
jokerrain
9171 2016-12-15
7446 차트 질문 파일
신현철
9110 2016-10-04
7445 java.io.IOException/java.lang.NullPointerException 발생
윤재국
9983 2016-07-13
7444 호환성 보기
kiarakim
8725 2016-07-11
7443 가우스 그리드에 문자입력시 한글/영문 우선순위 변경
hthink
8641 2016-04-21
7442 레포트 DFooter영역 이미지 태그
FKSS
9256 2016-04-20
7441 좌/우측으로 데이터 이동
헐랭이
7794 2016-04-15
7440 가우스 리포트를 PDF로 저장 가능한가요?
안순주
10108 2016-04-12
7439 중간소계 필드 제외 문의
김은영2
7709 2016-04-08
7438 가우스 그리드 범위지정 선택 가능여부 문의 [1]
hthink
9952 2016-03-29
7437 그리드에 이미지표현 파일 [1]
홍혜련
9048 2016-03-23
7436 Internet Explorer의 작동이 중지되었습니다. 파일 [1]
김태성2
8713 2016-03-18
7435 특정 index (row) 삭제 [1]
c1138
9002 2016-03-17
7434 was교체시 업그레이드 재설치 문의 [1]
박서영
7840 2016-03-15
7433 파일 업로드 문의(핸들이 잘못 되었습니다)
임종훈
8798 2016-03-15
7432 개발서버 라이센스 갱신 문의 [1]
정민75
9879 2016-03-07
7431 문의합니다 파일 [1]
c1138
9235 2016-03-07
7430 EnterpriseMode 적용이 되지 않습니다. 파일 [1]
동긔나긔
10411 2016-03-03
Tag List
XE Login