0

これは、oledb 接続を持つ共有ドライブ上の .mdb データベースを使用して Visual Basic で記述されています。

次の 2 つのレコードを含むテーブルがあるとします。

    |ID |NAME        |CITY     |
    |2  |John Smith  |Dallas   |
    |15 |Bob Johnson |New York |

oledb はテーブルをローカル データセットにコピーしてから db( ) に送り返すため、data.tables("Test").Rows.Add2 人が同時に 3 行目のスロットに新しいレコードを追加しようとすると、レコードの 1 つが失われますか? もしそうなら、どうすればこれを防ぐことができますか?

補足: 既存の行を編集するアクセス権はなく、新しい行を追加するだけです。

回避策:したがって、提案どおりにテストプログラムをセットアップしてループし、試行間のバッファ時間なしでデータベースを100回更新しようとしました。2台のコンピューターで同時に実行しました。まったく同じ秒で更新しようとしたときに、プログラムの 1 つのデータが失われましたが、エラーも発生しました。最終的に、これはめったに発生せず、プログラムの実行ごとに合計で約 3 つのエラーしか発生しませんでした。

私のプログラムは主に小規模であるため、MySQL 用にプログラム全体を書き直してコンピューターにセットアップすることはできませんでした。データベース ファイルを共有ドライブに置きたいだけだからです。最後に、エラーが発生した場合に更新を再試行するために catch ブロックで作業することで、データが失われないところまで機能させることができました。大規模な生産のためのソリューションではありませんが、私の目的には非常にうまく機能します。

4

1 に答える 1

0

まず、業界の人々が Access を使用しない理由があります... 簡単に言えば、それはウィキペディアで読むたわごとデータベースです。
私の最善の策は、MSSQL を使用することです。これにより、ネットワーク経由であっても、信頼できるようになります (DB をホストしているサーバーのファイアウォールに例外を追加する限り)。片頭痛がしたくない場合はMSSQLを使用してから、私たちに戻ってきて、どうなるか教えてください. VB で Access db をセットアップするのと同じように、かなり簡単にセットアップできます。
回避策を見つけたのを見たばかりですが、それが永続的な解決策であり、将来のプロジェクトで問題なく使用できることを願っています

于 2013-08-13T04:55:23.820 に答える