PHP & Others

[VB] mysql을 odbc쓰지 않고 다이렉트로 연결하는 방법

페이지 정보

본문

ODBC를 설정 하지않고 MySQL 데이터베이스의 사용은 가능합니다. 우선 자료실에 가셔서 12116 번 게시물의 DLL을 다운 받으시고

레지스트리에 등록 하시기 바람니다...

 

* 참고로 본 DLL은 http://www.mysql.com/downloads/os-win32.html 의 MyOLEDB3.exe 파일입니다.

  단, 원본의 경우 한글 사용에 문제를 발생합니다.. 수정본이 자료실에 있는 DLL이고요..

 

 

Public cnCon As Connection

 

Private Sub ConnectMySQL()

'MySQL 서버와의 연결

    On Error GoTo ErrorHandler

    Set cnCon = New Connection

    With cnCon

        .ConnectionTimeout = 30

 

        'OLE DB를 이용한 연결

        .ConnectionString = "Provider=MySqlProv.3.0;" & _

                            "Data Source=데이터베이스명;" & _

                            "Integrated Security=;" & _

                            "Password=비밀번호;" & _

                            "User ID=아이디;" & _

                            "Location=아이피주소;" & _

                            "Extended Properties="

       

'        'OLE DB를 이용한 ODBC 드라이버 연결

'      .ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & _

'                        "SERVER=아이피주소;" & _

'                        "DATABASE=데이터베이스명;" & _

'                        "UID=아이디;PWD=비번; OPTION=3"

        .Open

       

    End With

    Set ConnectMySQL = cnCon

    Exit Sub

 

ErrorHandler:

    MsgBox Err.Source + " ERROR " + CStr(Err.Number) + " - " + Err.Description

 

End Sub

 

Public Function getRecordsetFromMySQL(ByVal p_strSQL As String) As Recordset

'레코드셋을 리턴하는 질의

    Dim pRS As Recordset

   

    Set pRS = New Recordset

    pRS.Open p_strSQL, cnCon, adOpenForwardOnly, adLockReadOnly    'CursorType, LockType은 자신의 프로그램에 알맞게 설정...

    Set getRecordsetFromMySQL = pRS

End Function

 

---------------------------------------------------------------
추가 설명

알아보시기 쉽게 단계적으로 설명 드리겟습니다

 

1. VB 프로젝트를 표준EXE로 연다.

 

2. 메인 메뉴의 프로젝트 -> 참조 -> Microsoft ActiveX Data Objects 2.6 Library를 체크박스 체크하시고 확인.

  없으시면 IE를 업데이트 하세요. (익스플로어 -> 도구 -> Windows Update) 또 다른 방법은 www.atfile.com에 가셔서

  직접 MDAC를 다운받으셔서 설치 하셔도 되구요.

 

3. 모듈을 하나 추가 한다. (프로젝트 -> 모듈추가 -> 확인)

 

4. 모둘에 Public cnCon As Connection 를 복사한다.(참고로 Connection은 ADO에서 제공하는 개채입니다.)

 

5. ConnectMySQL과 getRecordsetFromMySQL 프로시져을 모듈에 복사한다.(다음은 모듈의 내용입니다)

 

    Option Explicit

   

    Public cnCon As Connection

   

    Public Sub ConnectMySQL()

    'MySQL 서버와의 연결

        On Error GoTo ErrorHandler

   

        Set cnCon = New Connection

        With cnCon

            .ConnectionTimeout = 30

            'OLE DB를 이용한 연결

            .ConnectionString = "Provider=MySqlProv.3.0;" & _

                                "Data Source=데이터베이스명;" & _

                                "Integrated Security=;" & _

                                "Password=비밀번호;" & _

                                "User ID=아이디;" & _

                                "Location=아이피주소;" & _

                                "Extended Properties="

   

           

   

    '        'OLE DB를 이용한 ODBC 드라이버 연결

    '      .ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & _

    '                        "SERVER=아이피주소;" & _

    '                        "DATABASE=데이터베이스명;" & _

    '                        "UID=아이디;PWD=비번; OPTION=3"

            .Open

        End With

        Exit Sub

   

    ErrorHandler:

        MsgBox Err.Source + " ERROR " + CStr(Err.Number) + " - " + Err.Description

    End Sub

   

    Public Function getRecordsetFromMySQL(ByVal p_strSQL As String) As Recordset

    '레코드셋을 리턴하는 질의

        Dim pRS As Recordset

   

        Set pRS = New Recordset

        pRS.Open p_strSQL, cnCon, adOpenForwardOnly, adLockReadOnly    'CursorType, LockType은 자신의 프로그램에 알맞게 설정...

        Set getRecordsetFromMySQL = pRS

    End Function

 

6. Form1에 Button을 하나 올려놓고 Click 이벤트에 다음과 같이 정의한다

    Private Sub Command1_Click()

        ConnectMySQL

    End Sub

 

 

8. Dll 등록

    8.1 우선 자료실에서 받으신 dll을 시스템 폴더에 복사한다. - 시스템 폴더(C:\\Windows/system 또는 C:\\WINNT/system32)

    8.2 시작 -> 실행 -> regsvr32.exe MyProv.dll -> 확인

 

7. 실행 해본다.

 

 

 

참고로 위의 5번의 ConnectMySQL 프로시져에서 2가지 방법으로 설명을 드렸는데.. 어느 방법을 사용하셔도

무방합니다. 단, 첫번재 방법은 생성된 템터러리 테이블의 활용에..제약이 있는거 같더군요. 2번째 방법은

템퍼러리 테이블 생성과 활용에 문제가 없고요.

 
[이 게시물은 nuno님에 의해 2007-01-24 00:45:05 Etc.에서 이동 됨]

관련자료

등록된 댓글이 없습니다.
Today's proverb
최고의 도덕이란 끊임없이 삶을 위해 봉사하고 희생하는 것이다. 그리고 인류를 위한 사랑으로 일하는 것이다. (간디)