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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.3749 の関連記事表示

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

    分類:[VB.NET (Windows)] 

    はじめまして。

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

    このような場合
    キャッシュなどが原因なのでしょうか?
    解決策などありましたら、是非よろしくお願いいたします。
親記事 /過去ログ13より / 関連記事表示
削除チェック/

■3750  Re[1]: VB.NET リストへの反映
□投稿者/ 魔界の仮面弁士 -(2007/05/22(Tue) 10:21:36)
    No3749 (shta さん) に返信
    > 新しいデータベースの内容が反映されていない状態になっています
    ちなみに、トランザクション制御は正しく行われていますでしょうか。
    コミットし忘れていたとか、暗黙のトランザクションに頼っていたりはしませんか?

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

    ちなみに、Microsoft JET Database Engine(いわゆる mdb ファイル)の場合:http://www.canalian.com/workshop/access/JetCache.html
記事No.3749 のレス /過去ログ13より / 関連記事表示
削除チェック/

■3753  Re[2]: VB.NET リストへの反映
□投稿者/ shta -(2007/05/22(Tue) 10:45:53)
    皆さん返信ありがとうございます。

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

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

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

    それは確認しました。
    時間が経過してから反映すると、しっかりと反映されるので間違いないと思うのですが…
    聞かれていることとお答えが違うでしょうか…?
記事No.3749 のレス /過去ログ13より / 関連記事表示
削除チェック/

■3751  Re[1]: VB.NET リストへの反映
□投稿者/ HIRO -(2007/05/22(Tue) 10:24:03)
>
    No3749 (shta さん) に返信
    > はじめまして。
    >
    > VB.NETで、
    > データベースを書き換える処理を行った後に
    > データベースを覗きに行って、リストボックスに反映する。
    > という処理を行うようにしているのですが、

    「データベースで書き換える処理を行った後」とありますが、本当にデータが書き換えられているかどうかは確認しましたか?
記事No.3749 のレス /過去ログ13より / 関連記事表示
削除チェック/

■3754  Re[1]: VB.NET リストへの反映
□投稿者/ shta -(2007/05/22(Tue) 11:44:02)
    たびたびすみません。

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

    これを、レジストリをいじったりするのではなく
    プログラムでキャッシュをリフレッシュするようにしたいのですが、
    先ほど教えていただいたHPや、他のHPの内容を見て、
    同じようにDim JRO As New JRO.JetEngineのような宣言をしても
    宣言されていない、などと言われてしまい、あまり理解を深めることができませんでした…。
    どのようにしたらよいのか、よろしければ詳しく教えていただけないでしょうか?
記事No.3749 のレス /過去ログ13より / 関連記事表示
削除チェック/

■3758  Re[2]: VB.NET リストへの反映
□投稿者/ 魔界の仮面弁士 -(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 に対しても有効かどうかは、当方でも未検証です。
記事No.3749 のレス /過去ログ13より / 関連記事表示
削除チェック/

■3818  Re[3]: VB.NET リストへの反映
□投稿者/ shta -(2007/05/24(Thu) 14:02:57)
    2007/05/24(Thu) 15:54:11 編集(投稿者)


    >魔界の仮面弁士 さん

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

    皆さんも色々とありがとうございました。
    せっかくなので、今回学んだ方法などは
    次に活かさせていただきたいと思います!
記事No.3749 のレス / END /過去ログ13より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -