통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
Visual C++ 포럼마을 입니다.
  마을등급 Visual C++   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 나성훈 주민 34037 since 2006-12-29
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
마을 게시판
등록된 마을 게시판이
없습니다.
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 강좌&팁
 [ADO] TSQL 구문 여러개 날리기  | VC++ 일반 2002-09-30 오전 10:23:53
조경민 번호: 5406  / 읽음:1,563
오후 1:45 2002-08-23
조경민 bro@shinbiro.com
TSQL 구문 여러개 날려주기
=============================================================

만일 INSERT , DELETE, UPDATE를 여러번 해야 하는 경우
DB 서버가 로컬이 아니면 네트워크 부하를 주게 된다.
이럴떄는 여러번의 INSERT 등의 실행문을 DB서버에게 한번에
전송하여 실행하게 하는 것이 좋다.
이를 Stored Procedure Batch Execute라고 한다.

실행시킬수있는 TSQL 구문은 MSSQL의 경우 128K정도라고 한다.


    CoInitialize(NULL);

    _ConnectionPtr conn;
    
    if( !fnADOConnectionOpen( conn, _T("Provider=sqloledb;Server=DB써버;database=데타베이수;User id=bro;password=암호"
         ) )
    {
        TRACE( fnADOGetLastError() );
        return;
    }

    try
    { 
    CString sSQL;
    sSQL.Format("\
BEGIN TRAN \
declare @sVal nvarchar(255) \
select @sVal = name from test where age = '1' \
INSERT INTO Test (name,age) VALUES (@sVal,'bb') \
INSERT INTO Test (name,age) VALUES ('bbb','cc') \
ROLLBACK \
");

    _bstr_t bsSQL(sSQL);
    
    conn->Execute( bsSQL, NULL, adExecuteNoRecords );
    }
    catch(_com_error &e)
    {
        // Notify the user of errors if any.
        // Pass a connection pointer accessed from the Connection.
        PrintProviderError(conn);
        PrintComError(e);
    }

    TRACE( fnADOGetLastError() );




---------
BOOL fnADOConnectionOpen( _ConnectionPtr& pConnPtr, char* pszConnectionString )
{
    try
    { 
        if( pConnPtr == NULL )
            TESTHR(pConnPtr.CreateInstance(__uuidof(Connection)));

        //USES_CONVERSION;
        
        // 2001/01/04 Memory Leak Fix
        //_bstr_t bstrConnection = SysAllocString(A2W(pszConnectionString));;
        _bstr_t bstrConnection(pszConnectionString);
         TESTHR(    pConnPtr->Open(bstrConnection, "", "", NULL) );
    }
    catch(_com_error &e)
    {
        // Notify the user of errors if any.
        // Pass a connection pointer accessed from the Connection.
        if( pConnPtr )
            PrintProviderError(pConnPtr);
        PrintComError(e);

        return FALSE;
    }

    return TRUE;
}

코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.