mysqlをODBC経由でアクセスするとメモリリークが?

解決


mopu  2004-07-13 07:35:05  No: 84546

LinuxサーバーにインストールしてあるmysqlをODBC経由でADOを使いVBからアクセスするプログラムを作っています。
すでにアクセス自体はできているのですが、ODBCドライバのオプションで「EUC変換する」をチェックし、
しばらくDBにアクセスしていると未使用メモリがどんどん減っていきます。
同じような現象を体験した方がいたら解決方法を教えてもらえないでしょうか?

環境構成
--------------------------------------------------------------
Linuxサーバー  RedHatLinux7.3
DB            mysql4.1.1

開発機         Win98
VB            ver6.0SP6
MDAC          ver2.8

クライアント   WinXP pro
ODBC          myODBC3.51.06(myodbc-3.51.06-conv_ujisパッチ使用)
VBランタイム   SP6適応最新バージョン
--------------------------------------------------------------

テストソース
--------------------------------------------------------------
Dim connection As New ADODB.connection

Private Sub Form_Initialize()

    Set connection = CreateObject("ADODB.Connection")    
    connection.Open "DSN=testDB"
    
End Sub

Private Sub Form_Load()

    Dim i As Integer

    For i = 0 To 18
        Dim rs As New ADODB.Recordset
        Set rs = connection.Execute("SELECT * FROM test01")
        rs.Close
    Next i
    
End Sub

Private Sub Timer1_Timer()
    Form_Load
End Sub

Private Sub Form_Unload(Cancel As Integer)

    connection.Close
    
End Sub
--------------------------------------------------------------
※1秒ごとにForm_Loadを呼んでいます


DAN  2004-07-13 22:33:14  No: 84547

ソースを見てもいまいち何がしたいのわかりませんが、
たしかCloseしただけではメモリからは削除されなかったと思います。
connection.Closeの後に以下を記述しても変わりませんか?

Set connection = Nothing


DAN  2004-07-13 22:42:46  No: 84548

>connection.Closeの後に以下を記述しても変わりませんか?
>
>Set connection = Nothing
↑間違い
(正)Set rs = Nothing


mopu  2004-07-14 03:24:40  No: 84549

DANさん返信ありがとうございます

いろいろ試していると原因が見え始めてきました。
mySQLODBCの設定で「EUC変換する」のチェックを外すとメモリリークがなくなりました。
当然ながら日本語が化けてしまうようになるのですがこれはVBの中でEUC→S_JIS変換でどうにかしようと思っています。

VB側の問題というよりかはODBCの方が問題だったみたいです。
微妙な板違い失礼しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加