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を呼んでいます
ソースを見てもいまいち何がしたいのわかりませんが、
たしかCloseしただけではメモリからは削除されなかったと思います。
connection.Closeの後に以下を記述しても変わりませんか?
Set connection = Nothing
>connection.Closeの後に以下を記述しても変わりませんか?
>
>Set connection = Nothing
↑間違い
(正)Set rs = Nothing
DANさん返信ありがとうございます
いろいろ試していると原因が見え始めてきました。
mySQLODBCの設定で「EUC変換する」のチェックを外すとメモリリークがなくなりました。
当然ながら日本語が化けてしまうようになるのですがこれはVBの中でEUC→S_JIS変換でどうにかしようと思っています。
VB側の問題というよりかはODBCの方が問題だったみたいです。
微妙な板違い失礼しました。