C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[44732] Re:컴키자마자 디비관련프로그램 실행시...... mysql오류..
장성호 [nasilso] 946 읽음    2006-05-04 08:52
저도 그런경우가 있었는데요

MySQL을 서비스에서 자동시작으로 설정해 놓아도
Mysql보다 내가 만든 프로그램이 먼저 실행되는 경우가 있더라구요

더 좋은 방법이 있는지 모르겠지만(시작프로그램이나 서비스의 실행순서를 지정하는 방법이 있다면...?)

저는 그냥 프로그램에서       MySql서비스가 제대로 시작되었는지 확인하는 코딩을 넣었습니다.

아래는  코드는 Window에서 서비스를 삭제하는 함수입니다.
MySql의 상태를 체크하고 .. 실행중이면 중지 시킨후에 삭제하는 루틴으로 되어있습니다.
혹 참조가 되길 바랍니다.

static SERVICE_STATUS   g_sStatus;
BOOL RemoveService()

{

    String sName="MySql";
    SC_HANDLE schService = NULL;

    SC_HANDLE schSCManager = NULL;

    TCHAR szError[MAX_PATH] = {0, };

    BOOL bRet = FALSE;



    schSCManager = ::OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS );

    if ( NULL != schSCManager )

    {

        schService = ::OpenService(schSCManager,sName.c_str(),SERVICE_ALL_ACCESS);



        if (NULL != schService)

        {

            if (TRUE == ::ControlService(schService,SERVICE_CONTROL_STOP, &g_sStatus))

            {

                while( ::QueryServiceStatus( schService, &g_sStatus) )

                {

                    if (g_sStatus.dwCurrentState == SERVICE_STOP_PENDING )

                    {

                        ::Sleep( 1000 );

                    }

                    else

                    {

                        break;

                    }

                }



                if (g_sStatus.dwCurrentState == SERVICE_STOPPED )

                {

                    ShowMessage(sName+" Stop \n");

                    //printf("MySql Stop \n");

                    bRet = TRUE;

                }

                else

                {

                    ShowMessage(sName+" failed \n");

                    //printf("MySql failed \n");

                    bRet = FALSE;

                }



            }



            // now remove the service

            if( TRUE == ::DeleteService(schService) )

            {

                ShowMessage(sName+" removed \n");

                //printf("MySql removed \n");

                bRet = TRUE;

            }

            else

            {

                ShowMessage(sName+" DeleteService failed \n");

                //printf("MySql DeleteService failed \n");

                bRet = FALSE;

            }



            ::CloseServiceHandle(schService);

        }

        else

        {

            ShowMessage(sName+" OpenService failed \n");

            //printf("MySql OpenService failed \n");

            bRet = FALSE;

        }



        ::CloseServiceHandle(schSCManager);

    }

    else

    {

        ShowMessage(sName+" OpenSCManager failed \n");

        //printf("MySql OpenSCManager failed \n");

        bRet = FALSE;

    }


    return bRet;

}


정 님이 쓰신 글 :
: 제목이좀 그런데용..
: 이번에 프로젝트로 디비로 데이타 관리하고 뭐 그런 프로그램을 만들었습니다. 생산에 들어가는 장비인데..
: mysql 5.0을 사용했습니다..
: 그래서 시작프로그램에 이 실행파일을 넣어서 컴이 키자마자 실행하게끔 했습니다...
: 하지만 mysql-nt 데몬이 실행을 못하고 해서 그런지 에러가 나더군요...
: 데몬을 먼저 실행하고 저 프로그램을 실행하는 방법이 있는지.....
: 답변부탁드립니다....

+ -

관련 글 리스트
44729 컴키자마자 디비관련프로그램 실행시...... mysql오류.. 920 2006/05/04
44733     Re:컴키자마자 디비관련프로그램 실행시...... mysql오류.. 758 2006/05/04
44732     Re:컴키자마자 디비관련프로그램 실행시...... mysql오류.. 장성호 946 2006/05/04
44731     Re:컴키자마자 디비관련프로그램 실행시...... mysql오류.. BloodWolf 824 2006/05/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.