vb.net でmysqlにodbcで接続後クエリを送信したいのですが、見よう見まねで、色々試したのですがクエリ送信部分がわかりません
お知恵をお貸しください
よろしくお願いいたします。
Dim MyConString As String = "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"PORT=3306;" & _
"DATABASE=dbtest;" & _
"UID=root;" & _
"PASSWORD=*****;" & _
"OPTION=3"
'Connection
Dim MyConnection As New OdbcConnection(MyConString)
'MySQL INSERT
Dim strSQL As String = "INSERT INTO `table` ( f1 , f2 ) VALUES ('1', '2');"
Dim myOdbcCommand As New OdbcCommand(strSQL)
'myConn.Open()
MyConnection.Open()
Console.WriteLine("Connection State::" & MyConnection.State.ToString)
myOdbcCommand.ExecuteNonQuery()
myOdbcCommand.Connection = MyConnection
'クローズ
MyConnection.Close()
Console.WriteLine("Connection State::" & MyConnection.State.ToString)
これは無茶ですネ!〜
どこでエラー?と聞かなくても解ります。
以下のようにしてみて下さい。
Dim MyConString As String
Dim MyConnection As OdbcConnection
Dim strSQL As String
Dim myOdbcCommand As OdbcCommand
Dim iRet As Integer
MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + _
"SERVER=localhost;" + _
"PORT=3306;" + _
"DATABASE=dbtest;" + _
"UID=root;" + _
"PASSWORD=*****;" + _
"OPTION=3"
'Connection
MyConnection = New OdbcConnection(MyConString)
'myConn.Open()
MyConnection.Open()
Console.WriteLine("Connection State::" & MyConnection.State.ToString)
'MySQL INSERT
strSQL = "INSERT INTO table ( f1 , f2 ) VALUES ('1', '2');"
' myOdbcCommand = MyConnection.CreateCommand
myOdbcCommand = New OdbcCommand
myOdbcCommand.Connection = MyConnection
myOdbcCommand.CommandType = CommandType.Text
myOdbcCommand.CommandText = strSQL
iRet = myOdbcCommand.ExecuteNonQuery()
myOdbcCommand.Dispose()
'クローズ
MyConnection.Close()
MyConnection.Dispose()
Console.WriteLine("Connection State::" & MyConnection.State.ToString)
ご参考までに・・・
以上。
追伸・・・
VB.NET 2002 ですか? それとも、VB.NET 2003 ですか?
要は、.NET Framework 1.0 か、1.1 か・・・
1.0 の場合、データベース(MySQL)へのSQL文の実行では、
エラーしないのに、実際には、成功終了しない・・・と言う
エラーが多発します。MySQL のバージョンにもよるようです。
私も、1.0 で何度か首をかしげるトラブルに見舞われました
が、1.1 にアップしたら、何がどうなったの?と思うほど、
トラブルがなくなりました。ADO.NETのトランザクション処
理にも起因していますが、1.0 では未サポートな為、安全に
行いたいのであれば、1.1 にして下さい。
以上。
回答ありがとうございます。
ご提示のソース使用させていただきました。
下記の行がエラーになってしまいました。
iRet = myOdbcCommand.ExecuteNonQuery()
'Microsoft.Data.Odbc.OdbcException' のハンドルされていない例外が microsoft.data.odbc.dll で発生しました。
対処方法を教えてください
よろしくお願いします。
環境
VB.NET 2003
.NET Framework 1.1
Mysql4.0.21-nt (Winローカル)
クエリ部分を修正するとクエリ実行に成功しました。
○
INSERT INTO `table` ( f1 , f2 ) VALUES ('1', '2')
×
INSERT INTO table ( f1 , f2 ) VALUES ('1', '2')
MySQLのバージョンの問題かテーブル名を``で括らないとエラーになる様でした。(MysqlAdminでのクエリ実験でも同じ結果でした。)
岡田 之仁様 ありがとうございました。