ファイル ハンドルを開いたままにしておく ADOX ライブラリで問題が発生したことはありますか?
VB6 -> VB.Net 変換で奇妙な問題が発生しています。ADOX を使用して特定のデータベース内のテーブルを調べ、自動インクリメント プロパティを true に設定して、そのテーブル内の列のシード値をリセットする関数があります。
「col.Properties("Autoincrement").Value」の呼び出しまで問題を追跡しました。このコード行がコメント アウトされている場合、関数の最後で ADO 接続と ADOX 接続の両方を閉じたときに、ファイル ハンドルが適切に終了します。その行をそのままにしておくと、呼び出しを閉じてガベージ コレクションを強制しても、ハンドルは開いたままになります。
オブジェクトを閉じる方法は次のとおりです。
System.Runtime.InteropServices.Marshal.ReleaseComObject(adoConn)
Dim connection As ADODB.Connection = cat.ActiveConnection
If Not connection Is Nothing Then
connection.Close()
End If
cat.ActiveConnection = Nothing
cat = Nothing
adoConn は ADO 接続、cat は ADOX.Catalog オブジェクトです。col (以前から) は、カタログ オブジェクトで使用される ADOX.Column オブジェクトです。
私は当初、このアルゴリズムを ADO.Net を使用するように変換しようとしましたが、DataSet オブジェクトを使用して近づきましたが、テーブルの列が自動インクリメントに設定されているかどうかを判断する方法を理解できませんでした。これは Access 2000 データベースの場合です。