- - PR -
mysqlのoledb接続
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-08-18 16:03
asp.netでmysqlにoledb接続でアクセススしたいのですが、上手くいきません。
「System.Runtime.InteropServices.COMException (0x80040E21): 複数ステップの OLE DB の操作でエラーが発生しました。各 OLE DB の状態の値を確認してください。作業は終了しませんでした。」 ODBC接続だと上手くいきます。 ですが、帳票ツール(ActiveReport)でODBC接続が出来ない(本当は出来るかも..) ので、oledb接続で行いたいです。今までは、AS400で行っておりましたが、 クライアントPCのみでも行える様にしたいというお客様の要望で、iniファイルで使用 dbを切り分けてas400を使うかmysqlを使うかを判断しようと思っています。もちろんas400に接続した時は、odbcでもoledbでも問題なく動作します。 色々自分なりに調べてはみたのですが、レジストリを変更する必要があるとか しか載っていません。oledb接続するのにレジストリを変更しなければいけないのでしょうか? 接続箇所のソースコードです。どなたかご教示願えませんでしょうか。 Public Shared Function DbOpen() As Object Dim wCon As New ADODB.Connection Try wCon.ConnectionTimeout = WSysComIniInfo.intConnectionTimeout wCon.CommandTimeout = WSysComIniInfo.intCommandTimeout wCon.CursorLocation = WSysComIniInfo.intCursorLocation wCon.Open(DbConnStrOLE(), WSysComIniInfo.strUser, WSysComIniInfo.strPassword)<−− ここで落ちます。 Catch ex As Exception Throw ex End Try Return wCon End Function Public Shared Function DbConnStrOLE() As String Dim strConn As String DbConnStrOLE = "" strConn = "" strConn = strConn & "Provider=sqloledb;" strConn = strConn & "Data Source=localhost;" strConn = strConn & "User ID=root;" strConn = strConn & "Password=pass;" '--------------------- strConn = strConn & "Persist Security Info=True;" strConn = strConn & "Protection Level=None;" strConn = strConn & "Initial Catalog=;" strConn = strConn & "Transport Product=Client Access;" strConn = strConn & "SSL=DEFAULT;" strConn = strConn & "Force Translate=65535;" strConn = strConn & "Default Collection=;" strConn = strConn & "Convert Date Time To Char=TRUE;" strConn = strConn & "Catalog Library List=;" strConn = strConn & "Cursor Sensitivity=3" Return strConn End Function |
|
投稿日時: 2008-08-18 16:54
自己レスです。
80040E21のエラーは解消されました。 '--------------------- strConn = strConn & "Persist Security Info=True;" strConn = strConn & "Protection Level=None;" strConn = strConn & "Initial Catalog=;" strConn = strConn & "Transport Product=Client Access;" strConn = strConn & "SSL=DEFAULT;" strConn = strConn & "Force Translate=65535;" strConn = strConn & "Default Collection=;" strConn = strConn & "Convert Date Time To Char=TRUE;" strConn = strConn & "Catalog Library List=;" strConn = strConn & "Cursor Sensitivity=3" をコメントアウトしたら上手くいきました。 しかし、プロバイダ接続文字のsqloledbはsqlServerでMySqlには接続できない みたいです。MySql5.0の接続文字は何を使用すれと良いか何方かご教示願います。 各種サイトで色々調べてみましたが、すべてプロバイダが見つかりませんという エラーがでます。 試した接続文字 "MySqlProv" "MySqlProv5.0" "OleMySql.MySqlSource.1" |
|
投稿日時: 2008-08-18 17:53
接続文字列については、下記サイトにて調べてください。
ConnectionStrings.com MySQL -> OLE DB, OleDbConnection (.NET) に記載されています。 それと・・・ >Dim wCon As New ADODB.Connection これはADO接続の様に思えるのですが・・・ OLEDB接続を行うならば、System.Data.OleDb以下の各クラスを使いましょう。 |
|
投稿日時: 2008-08-19 11:11
くまっちさん
ありがとうございます。 さっそく教えていただいたサイトを参考にしてみます。 |
|
投稿日時: 2008-08-19 11:32
System.Data.OleDb配下のクラスを使用して
Dim wCon As New OleDbConnection にして Provider=MySqlProv で実行してみましたが、結果は同じでした。 「'MySqlProv'プロバイダはローカルのコンピュータに登録されていません。」 |
|
投稿日時: 2008-08-19 15:31
MySQL用のOLEDBプロバイダ(MyOleDb)がインストールされていないのでは?
MyOleDb SourceForge-MyOleDbプロジェクト #余談ですが.NetからMySQLへ接続するならばMySQL-Connector/NETを使う道もあります。 |
1