db와 연동하는 방법은 두가지 있다.
하나는 odbc를 이용한 방법과 다른 하나는 oledb를 이용하는 방법인데 오늘시간에 연설할 내용은
두번째 방법이다.
oledb로 연결하기위해서는 mysql 홈페이지를 접속하여 connect 드라이버를 받아야 한다.
그리고 아래와 같이 네임스페이스를 추가한다.
Imports MySql.Data.MySqlClient 'oledb를 이용하기 위한 네임스페이스 추가.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '================================================
        ' 데이터베이스 연결 
        '================================================
        If Not conn Is Nothing Then conn.Close()
        Dim connStr As String
        connStr = String.Format("server=localhost;user id=아이디; password=비번; database=데이터베이스명; pooling=false")
        Try
            conn = New MySqlConnection(connStr)
            conn.Open()
            TextBox1.Text = "데이터베이스 연결성공"
            GetDatabases()
        Catch ex As MySqlException
            MessageBox.Show("Error connecting to the server: " + ex.Message)
            TextBox1.Text = "데이터베이스 연결실패"
        End Try
    End Sub

    Private Sub GetDatabases()
        Dim reader As MySqlDataReader
        reader = Nothing
        Dim sql As String = "SELECT name From test;"
        Dim cmd As New MySqlCommand(sql, conn)
        Try
            reader = cmd.ExecuteReader()
            'databaseList.Items.Clear()

            While (reader.Read())
                'databaseList.Items.Add(reader.GetString(0))
                MsgBox(reader.GetString(0))
            End While
        Catch ex As MySqlException
            MessageBox.Show("Failed to populate database list: " + ex.Message)
        Finally
            If Not reader Is Nothing Then reader.Close()
            MsgBox("데이터가 없습니다.")
            conn.Close()
        End Try

    End Sub

이소스는 사실 mysql에서 제공되는 소스이다. 천천히 보면 누구나 따라할 수 있다. 연결하는 부분부터 연결끊는부분까지 자세하게 소스가 정의되어 있기 때문이다.
이소스를 조금 응용하면 테이블 추가및 삭제 수정 조회 기능을 구현할 수 있다. 

간만에 프로그램을 만들다
제작언어 : vb.net 2008


로그인 화면이다.



메인화면

대학생이라면 듣고싶은 과목 인원이 차면 듣지 못하여서 별에별 짓을 다하는데 심심해서 post 데이터 분석해서 vb로 만들어 보았다. 이제까지 테스트 해보았는데 아주 잘 된다.


Dim RS As Recordset

strQUERY = "  SELECT * FROM TEST"

RS = TBOpen(strQUERY, False)

.RowCount = RS.RecordCount '전체레코드를 구하는 방법

처음에 이것도 잘 못찾아서 해맸다. 사경을...

레퍼런스만 뒤지다뒤지다 안돼서 스프레드 속성값을 찾아보니 protect 라는 속성이 보여서 false로 변경하니 바로 풀린다. 역시 사람은 경험을 해야 하는구나 하는 생각이 든다.

아래소스는 사용자가 주민번호를 입력할때 생일이 자동으로 입력되도록 해주라는 요구사항이였는데 아래와 같이 만들면 되겠다. 포커스를 이해하자.

Private Sub Jumin_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles mskJumin.LostFocus
    Dim strSex As String
    Dim strBirth As String

    strSex = Mid(mskJumin.CtlText, 8, 1)
    Select Case strSex
        Case "1", "3"
            cboSex.SelectedIndex = 1
        Case "2", "4"
            cboSex.SelectedIndex = 2
    End Select

    If mskJumin.CtlText <> "" Then '주민번호 자동생성
        mskBirth.CtlText = Format(Val("19" + MSVB.Left(mskJumin.CtlText, 6)), "####-##-##")
    End If
End Sub


mskindate.CtlText = Format(Now(), "yyyy-MM-dd") '날짜표현
mskBirth.CtlText = Format(Val(RS.Fields("birth").Value), "####-##-##") '생일
mskJumin.CtlText = Format(Val(RS.Fields("jumin").Value), "000000-0000000") '주민번호
txtB_surungyak.Text = Format(Val(Replace(txtB_surungyak.Text & "", ",", "")), "#,##0") '금액표현

사무용 프로그램에서는 주민번호나 생일, 금액표현 같은 부분이 세심하게 표현되어야 할때가 자주 있는데 이와 관련된 함수들을 외워두고 정리해 둔다면 유지보수 및 개발에 많은 도움이 될것이고 개발시간도 단축될것이다.

문자를 추출하는 함수는 여러가지가 있지만 이런 기법적인 함수는 외워두자. 가장 빈번하게 사용되는것 같다.

nowYear = MSVB.Left(mskDateYM.CtlText, 4) '년 추출
nowMonth = MSVB.Left(MSVB.Mid(mskDateYM.CtlText, 6), 2) '월 추출
nowDay = MSVB.Right(mskDateYM.CtlText, 2) '일 추출

VB로 실무를 하다보면 사용자 요구사항 중에 빈번하게 나오는 요구사항들은 편리성인데 그중 하나가 파일을 저장할때 다이얼로그 박스가 나오면서 파일명이 기입되게 하는 부분인데 무심코 만든 코딩보다는 신경써서 만들어 놓아야 할것이다. 아래는 해당코드인데 자신에 맡게 변경해서 사용하면 된다.

    Private Sub SaveFile()

        SaveFileDialog1.Title = "TEST"
        SaveFileDialog1.DefaultExt = "xls"
        SaveFileDialog1.Filter = "Excel Files|*.xls|All Files|*.*"
        SaveFileDialog1.FilterIndex = 1
        SaveFileDialog1.FileName = Format(Now(), "yyyyMMdd") + "_" + "Titel명"
        SaveFileDialog1.ShowDialog()

        If SaveFileDialog1.FileName = "" Then Exit Sub

        Dim strExt As String
        strExt = System.IO.Path.GetExtension(SaveFileDialog1.FileName)
        strExt = strExt.ToUpper()


        If strExt = ".XLS" Then
            파일저장 함수 호출
        End If

    End Sub

p.s 모든 언어가 마찬가지 겠지만 이런 섬세한 부분까지 챙겨준다면 사용자는 프로그램을 만들어준 개발자를 계속 찾을것이다.

+ Recent posts