- PR -

ldbファイルが残る

投稿者投稿内容
NEO
大ベテラン
会議室デビュー日: 2005/10/02
投稿数: 104
投稿日時: 2007-04-26 08:57
VB.NETでmdbファイルのテーブルにレコードを追加する際、
OleDbConnectionオブジェクトのCloseは行っているのに、
ldbファイルが残ってしまいます。

OleDbConnectionのオープン → クローズ だけでは残りませんが、
OleDbConnectionのオープン → レコード追加 → クローズ では必ず残ります。
原因が分かりませんので、分かる方教えてください。

レコード追加は、以下のようにやっています。

1.OleDbCommandオブジェクト生成。
2.OleDbCommandオブジェクトのConnectionプロパティに
オープン済みのOleDbConnectionオブジェクトをセット。
3.OleDbCommandオブジェクトのCommandTextプロパティに
SQLクエリ文字列をセット。
4.OleDbCommandオブジェクトにクエリパラメータを追加。
5.OleDbCommandオブジェクトのExecuteNonQuery実行
6.OleDbCommandオブジェクト破棄(Dispose)
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-04-26 09:09
引用:

NEOさんの書き込み (2007-04-26 08:57) より:

OleDbConnectionオブジェクトのCloseは行っているのに、
ldbファイルが残ってしまいます。


それは妙な現象ですねぇ。
残っている ldb ファイルのデータはどうなっています?

テキストエディタで確認できると思います。

_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-26 09:18
引用:

NEOさんの書き込み (2007-04-26 08:57) より:

VB.NETでmdbファイルのテーブルにレコードを追加する際、OleDbConnectionオブジェクトのCloseは行っているのに、ldbファイルが残ってしまいます。

引用:

1.OleDbCommandオブジェクト生成。
2.OleDbCommandオブジェクトのConnectionプロパティに
オープン済みのOleDbConnectionオブジェクトをセット。
3.OleDbCommandオブジェクトのCommandTextプロパティに
SQLクエリ文字列をセット。
4.OleDbCommandオブジェクトにクエリパラメータを追加。
5.OleDbCommandオブジェクトのExecuteNonQuery実行
6.OleDbCommandオブジェクト破棄(Dispose)


OleDbConnection のお話はどこへ放り投げられたのですか?
最初と最後の解説に相違があるようですが...?

OleDbCommand と、ldb ファイルは直接関係ありません。
OleDbConnection が Close または Dispose された段階で ldb ファイルは削除されます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
NEO
大ベテラン
会議室デビュー日: 2005/10/02
投稿数: 104
投稿日時: 2007-04-26 09:28
引用:

じゃんぬねっとさんの書き込み (2007-04-26 09:18) より:
OleDbConnection のお話はどこへ放り投げられたのですか?
最初と最後の解説に相違があるようですが...?



1.の前にOleDbconnectionを生成してDB接続し、
6.の後でOleDbConnectionはクローズし、Disposeしています。


MDBを作成してそのMDBのテーブルにレコードを追加するという処理を2つのMDBに対して行った場合、1つめのMDBに対するldbファイルはなくなりますが、2つめのMDBのldbファイルが残ることがあります。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-26 09:50
引用:

NEOさんの書き込み (2007-04-26 09:28) より:

1.の前にOleDbconnectionを生成してDB接続し、
6.の後でOleDbConnectionはクローズし、Disposeしています。


了解しました。
その通りのソースを書いているのであれば、間違っていないでしょう。

引用:

MDBを作成してそのMDBのテーブルにレコードを追加するという処理を2つのMDBに対して行った場合、1つめのMDBに対するldbファイルはなくなりますが、2つめのMDBのldbファイルが残ることがあります。


私は "MDB を作成して" の部分にこそ問題があるのではないかと推測します。
これに関しては手順が示されていないので、推測の域を超えないですけども。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-04-26 10:48
僕の質問が華麗にスルーされている理由が知りたいです orz
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
NEO
大ベテラン
会議室デビュー日: 2005/10/02
投稿数: 104
投稿日時: 2007-04-27 07:59
引用:

R・田中一郎さんの書き込み (2007-04-26 10:48) より:
僕の質問が華麗にスルーされている理由が知りたいです orz




すいません。
投稿は自宅、開発は会社なので、すぐ確認できなかったもので。

ldbはユーザ名が書かれていました。
ユーザ名は「〜が排他的に開いている」のエラーメッセージに出るものと同じです。

毎回残るわけではないのが厄介なんですよ。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-04-27 08:59
引用:

NEOさんの書き込み (2007-04-27 07:59) より:

投稿は自宅、開発は会社なので、すぐ確認できなかったもので。


そうだったんですね。それは、逆に申し訳ありませんでした。

引用:

NEOさんの書き込み (2007-04-27 07:59) より:

ldbはユーザ名が書かれていました。


そうでしたか。
ファイルのみが残ってデータが消えているだけ、という可能性も考えたのですが、そうではなかったのですね。
再現性が無いということは、バグの可能性も捨てきれません。
僕なら以下の方法を試します。参考にしてみてください。

コネクションの開閉、できれば、その時にデータベースに対して行った処理をログファイルに残すようにして、ldb ファイルが残っている時に、そのログを参照する。

怪しいと思われる部分をミニマムコードにして切り出して、いろいろなパターンで実行して再現パターンを掴む。

それと開発環境で実はデータベースを使用していたり・・・といったことはありませんか?
一応、可能性としてはありがちなパターンだったりしますので。
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog

スキルアップ/キャリアアップ(JOB@IT)