본문 바로가기
ADO

[ADO] mySql에 연결하여 데이터 가져오기

by 일등미노왕국 2022. 6. 1.

본인은 다잡님이 처음에 정규식을 썼을때 적지않은 충격을 먹었다.(사실 그의 코드는 늘 새롭고 신선하다)

지금 adoDB를 통한 sql구문을 사용하는 지금이 딱 그때와 같다.

 

어셈블리언어처럼 기본적으로 형식적인 구문들이 있어서 최대한 sql구문을 안 배우려고 했는데 배워야 하는데는 다 이유가 있는거 같다.

 

엑사남님 강의는 참 간결하고 미원(?) 안들어간 깔끔함이 있으니 꼭 한번*10 보시길 바란다. 

처음 강의는 엑셀을 DB화 하여 데이터를 처리하는 방식이고 / 두번째 DB강의는 엑세스를 DB화 하여 데이터를 처리하는 방식이다.

 

본인이 오늘 할 방식은 mySql DBMS에 접속하여 원하는 DB의 table을 가져오는 구문이다.

 

 

DB 접속이후에는 sql구문으로 쿼리를 작성하여 db에 접속하게 되는데 db에 접속하는 구문이 오늘 글에 핵심이다.

strCon = "DRIVER={MySQL ODBC 8.0 UNICODE Driver};" _  ' DB 버전
         "SERVER = localhost;" _                      ' 웹이 아닌 본인 컴이면 localhost
         "DATABASE = DB이름;" _                       ' DB 이름 / sql문에서 선언해도 됨(생략가능)
         "UID=계정ID;PASSWORD=패스워드;OPTION=3"            ' ID, 패스워드

더보기
Option Explicit

Sub Haja_Guid_mySql()

    Dim StrGuid$: StrGuid = "{B691E011-1797-432E-907A-4D8C69339129}" '= ADODB참조
    
    On Error Resume Next
        ThisWorkbook.VBProject.References.AddFromGuid StrGuid, 0, 0 '= 가장 최신버전
    On Error GoTo 0
    
    Call Haja_Adodb_mySql

End Sub

Sub Haja_Adodb_mySql()

    Dim Rs As New ADODB.Recordset  '= latebinding : CreateObject("ADODB.Connection")
    Dim strSQL$, strCon$
    Dim i&
    
    strCon = " DRIVER={MySQL ODBC 8.0 UNICODE Driver}; " & _
             " SERVER = localhost;" & _
             " USER =  root ;  PASSWORD = 2247 ; OPTION=3"
     
    strSQL = " SELECT emp_no AS 순번  , title AS 직업 , from_date AS 입사일 , to_date AS 퇴사일  " & _
             " FROM employees.titles " & _
             " limit 1000 ;"
             
   '= 헤더이름 변경 emp_no -> 순번  , title -> 직업 , from_date -> 입사일 , to_date -> 퇴사일
   '= employees 데이터베이스 / tilles 테이블 명
   '= limit 1000 : 데이터중 1000개만 가져와라 / 실질적인 데이터는 49만개
   
    On Error GoTo haja
    
    Rs.Open strSQL, strCon
    
    With Sheets("title")
    
        For i = 0 To Rs.Fields.Count - 1                '= 헤더값 출력구문
        
            .Cells(1, i + 1) = Rs.Fields(i).Name
        
        Next i
        
            Range(.[a1], .[a1].End(2)).Font.Bold = True
    
        If Rs.EOF Then
            MsgBox "조건에 맞는 데이터가 없습니다."
            Rs.Close
            Set Rs = Nothing
            Exit Sub
        Else
            .[a1].CurrentRegion.Offset(1).Clear
            .[a2].CopyFromRecordset Rs
           
        End If
        
        With .UsedRange
             .Font.Size = 9
             .HorizontalAlignment = xlCenter
             .Borders.LineStyle = 1
        End With
    End With
    
        
    Rs.Close
    Set Rs = Nothing
    
    Exit Sub
    
haja:
    
    MsgBox "검색을 할 수 없습니다.", 64
    
End Sub

mysql 연결.xlsm
0.05MB

댓글