Textt

  • Textt
  • ブログ
  • ユーザー登録
  • ログイン

sworc VB.net : ODBC + MySQL

  • Imports System.Data.

    Imports System.Data.Odbc

    Public Class MyLib

        Private Shared TargetCsvPath As String

        ' ******************************************************
        ' サンプルの為に、プロパティ用のメソッドを公開(Public)
        ' ******************************************************
        Public Shared Sub GetParam()

            ' CSV のパスを引数から取得する
            ' 空白を指定したい場合は、"文字列 文字列" のように指定する
            Dim arguments As String() = Environment.GetCommandLineArgs()
            ' 引数は一つのみ許可
            if arguments.Length <> 2 then
                Console.WriteLine("引数を指定して下さい")
                Return
            end if

            ' 引数からエクスポート対象テーブル名を取得
            MyLib.TargetCsvPath = arguments(1)

        End Sub

        ' ******************************************************
        ' データ取得のみの ReadOnly
        ' ******************************************************
        Public Shared ReadOnly Property CsvPath() As String
            Get
                MyLib.GetParam()
                Return MyLib.TargetCsvPath
            End Get
        End Property

        ' ******************************************************
        ' エラー処理
        ' ******************************************************
        Public Shared Sub ErrorAction( ex As OdbcException )

            Dim CrLf As String = ControlChars.CrLf
            Dim errorMessages As String = ""
            Dim i As Integer

            For i = 0 To ex.Errors.Count - 1
                errorMessages &= _
                    "Index #" & i.ToString() & CrLf _
                    & "Message: " & ex.Errors(i).Message & CrLf _
                    & "NativeError: " & ex.Errors(i).NativeError.ToString() & CrLf _
                    & "Source: " & ex.Errors(i).Source & CrLf _
                    & "SQL: " & ex.Errors(i).SQLState & CrLf
            Next i

            Console.WriteLine(errorMessages)

        End Sub

    End Class

    Partial Class MyLib

        ' 接続用のオブジェクト
        Private myCon As OdbcConnection
        ' 更新用のオブジェクト
        Private execCommand As OdbcCommand

        Private builder As OdbcConnectionStringBuilder

        Private server_string As String
        Private database_string As String
        Private user_string As String
        Private password_string As String

        ' ******************************************************
        ' 初期処理( コンストラクタ )
        ' ******************************************************
        Public Sub New(a As String,b As String,c As String,d As String)

            Me.server_string = a
            Me.database_string = b
            Me.user_string = c
            Me.password_string = d

        End Sub

        ' ******************************************************
        ' 接続作成
        ' ******************************************************
        Function Execute( Query As String ) As Boolean

            ' 接続を開く
            Try
                Me.execCommand.CommandText = Query
                Me.execCommand.ExecuteNonQuery()
            Catch ex As OdbcException
                Console.WriteLine("SQL実行エラーです")
                Call MyLib.ErrorAction( ex )
                Return False
            End Try

            Return True

        End Function

        ' ******************************************************
        ' 接続作成
        ' ******************************************************
        Function CreateConnection( ) As Boolean

            ' 新しい OdbcConnectionStringBuilder オブジェクトを作成
            Me.builder = New OdbcConnectionStringBuilder()

            ' ドライバ文字列をセット ( 波型括弧{} は必要ありません ) 
            ' 文字列を正確に取得するには、レジストリ : HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI
            builder.Driver = "MySQL ODBC 5.1 Driver"

            ' 接続用のパラメータを追加
            builder.Add("SERVER", Me.server_string)
            builder.Add("DATABASE", Me.database_string)
            builder.Add("UID", Me.user_string)
            builder.Add("PWD", Me.password_string)

            ' 内容を確認
            Console.WriteLine(builder.ConnectionString)

            ' 新しい OdbcConnection オブジェクトを作成
            Me.myCon = New OdbcConnection()

            ' 接続文字列を設定
            Me.myCon.ConnectionString = builder.ConnectionString

            ' 接続を開く
            Try
                Me.myCon.Open()
            Catch ex As OdbcException
                Console.WriteLine("接続エラーです")
                ' Console.WriteLine( ex.Message )
                Call MyLib.ErrorAction( ex )
                Return False
            End Try

            ' 同時に実行用のオブジェクトを作成
            execCommand = New OdbcCommand()
            execCommand.Connection = Me.myCon

            Return True

        End Function

        ' ******************************************************
        ' 接続終了
        ' ******************************************************
        Public Sub EndConnection( )

            ' 接続を閉じる
            Me.myCon.Close()

            ' OdbcConnection オブジェクトに使用されているすべてのリソースを解放
            Me.myCon.Dispose()

            Me.execCommand.Dispose()

            ' 処理終了
            Console.WriteLine("処理が終了しました")

            ' 一時停止
            Console.Write("Enterキーを押して下さい : ")
            Console.ReadLine()

        End Sub

    End Class
    2011/09/18 sworc
© Textt / GreenSpace