C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: VB.NET リストへの反映


(過去ログ 13 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■3749 / inTopicNo.1)  VB.NET リストへの反映
  
□投稿者/ shta (1回)-(2007/05/22(Tue) 10:10:40)

分類:[VB.NET (Windows)] 

はじめまして。

VB.NETで、
データベースを書き換える処理を行った後に
データベースを覗きに行って、リストボックスに反映する。
という処理を行うようにしているのですが、
どうにも更新前のデータだけが表示されて
新しいデータベースの内容が反映されていない状態になっています
その後、数秒時間が経過してから再度読み込みをしたり
もしくは、デバッガで少しずつ順を追って動かしてやると反映されます。

このような場合
キャッシュなどが原因なのでしょうか?
解決策などありましたら、是非よろしくお願いいたします。
引用返信 編集キー/
■3750 / inTopicNo.2)  Re[1]: VB.NET リストへの反映
□投稿者/ 魔界の仮面弁士 (283回)-(2007/05/22(Tue) 10:21:36)
No3749 (shta さん) に返信
> 新しいデータベースの内容が反映されていない状態になっています
ちなみに、トランザクション制御は正しく行われていますでしょうか。
コミットし忘れていたとか、暗黙のトランザクションに頼っていたりはしませんか?

> キャッシュなどが原因なのでしょうか?
そのような可能性もありますが、詳細がわからない以上、誰にも確かなことは言えないかと思います。

ちなみに、Microsoft JET Database Engine(いわゆる mdb ファイル)の場合:http://www.canalian.com/workshop/access/JetCache.html
引用返信 編集キー/
■3751 / inTopicNo.3)  Re[1]: VB.NET リストへの反映
□投稿者/ HIRO (30回)-(2007/05/22(Tue) 10:24:03)
HIRO さんの Web サイト
No3749 (shta さん) に返信
> はじめまして。
>
> VB.NETで、
> データベースを書き換える処理を行った後に
> データベースを覗きに行って、リストボックスに反映する。
> という処理を行うようにしているのですが、

「データベースで書き換える処理を行った後」とありますが、本当にデータが書き換えられているかどうかは確認しましたか?
引用返信 編集キー/
■3753 / inTopicNo.4)  Re[2]: VB.NET リストへの反映
□投稿者/ shta (2回)-(2007/05/22(Tue) 10:45:53)
皆さん返信ありがとうございます。

■魔界の仮面弁士 さん
> ちなみに、トランザクション制御は正しく行われていますでしょうか。
> コミットし忘れていたとか、暗黙のトランザクションに頼っていたりはしませんか?

その作業も行ってみたのですが、結果は変わりませんでした。
キャッシュの線が濃厚なようなので、HPの方を是非参考にさせていただきたいと思います。

■HIRO さん
> 「データベースで書き換える処理を行った後」とありますが、本当にデータが書き換えられているかどうかは確認しましたか?

それは確認しました。
時間が経過してから反映すると、しっかりと反映されるので間違いないと思うのですが…
聞かれていることとお答えが違うでしょうか…?
引用返信 編集キー/
■3754 / inTopicNo.5)  Re[1]: VB.NET リストへの反映
□投稿者/ shta (3回)-(2007/05/22(Tue) 11:44:02)
たびたびすみません。

レジストリをいじってみたところ
PageTimeoutの数字を極端に下げたところ、
リアルタイムで動いているように見えるようになったので
どうやら原因はJETエンジンのキャッシュで間違いないようでした。

これを、レジストリをいじったりするのではなく
プログラムでキャッシュをリフレッシュするようにしたいのですが、
先ほど教えていただいたHPや、他のHPの内容を見て、
同じようにDim JRO As New JRO.JetEngineのような宣言をしても
宣言されていない、などと言われてしまい、あまり理解を深めることができませんでした…。
どのようにしたらよいのか、よろしければ詳しく教えていただけないでしょうか?
引用返信 編集キー/
■3758 / inTopicNo.6)  Re[2]: VB.NET リストへの反映
□投稿者/ 魔界の仮面弁士 (284回)-(2007/05/22(Tue) 16:30:43)
2007/05/22(Tue) 16:31:41 編集(投稿者)

No3754 (shta さん) に返信
> どのようにしたらよいのか、よろしければ詳しく教えていただけないでしょうか?
解決策は、暗黙のトランザクションに頼らず、System.Data.OleDb.OleDbTransaction を用いて
『明示的にトランザクションを発行する』か、または排他モードで mdb を開くことです。
これにより遅延書込が行われなくなり、即座にディスクに反映されるようになります。

それで解決しないようなシビアなタイミングの問題(すなわち、リードキャッシュや
低レベルライトキャッシュ等に対する問題)の場合は、先述の URL にあるように、
OLE DB のダイナミックプロパティや、JRO 等を併用しての制御が必要になりますが、
それらが ADO.NET に対しても有効かどうかは、当方でも未検証です。
引用返信 編集キー/
■3818 / inTopicNo.7)  Re[3]: VB.NET リストへの反映
□投稿者/ shta (4回)-(2007/05/24(Thu) 14:02:57)
2007/05/24(Thu) 15:54:11 編集(投稿者)


>魔界の仮面弁士 さん

データベースのクローズを
しっかりとしてやったら解決しました!

皆さんも色々とありがとうございました。
せっかくなので、今回学んだ方法などは
次に活かさせていただきたいと思います!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -