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