問題タブ [database-engine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - テーブル ロックを使用して、複数のユーザーが特定の時間に更新できないようにする
シンプルなショッピングカートを作っています。現在、顧客が在庫切れの製品を決して購入できないようにするために、注文を処理するときに、カート内の各製品に対してループを作成しています。
-- トランザクションを開始します -- カート内の各製品をループして、
- 商品表から在庫数を選択
在庫がある場合:
- 商品から在庫数を減らします
- 注文商品テーブルに商品を追加する
それ以外の場合は、ロールバックを呼び出してエラーを返します
-- (ロールバックの呼び出しがない場合、すべてがコミットで終了します --
ただし、特定の製品のチェック後に製品の在庫数が更新されると、不一致が生じる可能性があります。
質問: 注文を処理しているときはいつでもテーブルを書き込みからロックするのは良い考えですか? そのため、上記の「ループ」が発生した場合、他の誰も製品数を変更できず、常に正確であることが保証されます.
製品数/在庫状況は常に一定であり、在庫数が -1 になることはありません (これは満たされない可能性があります)。
ただし、ロックが非効率的/悪影響を及ぼしているという投稿を非常に多く見てきました。もしそうなら、これを達成するための最良の方法は何ですか?
update + select クエリで処理するなどの代替手段を見てきましたが、場合によっては適切でないこともあります。
c# - .NET Framework 4.8 で accessdatabaseengine_X64 を使用して Microsoft Office バージョン : 18.2008.12711.0 を実行するには?
私はこのプラットフォームの初心者であり、.Net で MS Office アプリケーションを実行することにも慣れていません。ボタンをクリックして datagridview から Excel シートにデータをエクスポートしようとしています。これが私のコードです:
行を実行した後、xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass
Visual Studio は例外を次のように報告します。
「種類 'System.InvalidCastException' の未処理の例外が学生情報 System.exe で発生しました
追加情報: タイプ 'Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス タイプ 'Microsoft.Office.Interop.Excel._Application' にキャストできません。IID '{000208D5-0000-0000-C000-000000000046}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーにより失敗したため、この操作は失敗しました: 要素が見つかりません。(HRESULT からの例外: 0x8002802B (TYPE_E_ELEMENTNOTFOUND))」。
MS Office 365 バージョン: 18.2008.12711.0 で、2016 年にリリースされた AccessDatabaseEngine_X64 を使用しているため、このエラーが発生します。.Net Framework 4.8 で。
オフィスを手動で修復すれば問題は解決することはわかっていますが、アプリケーションのユーザーにオフィスを修復してこのエラーを手動で処理してもらいたくありません。代わりに、この問題を自動的に処理して適切な結果をもたらす機能を提供したいと考えています。
レジストリ エディターでキー Computer\HKEY_CLASSES_ROOT\TypeLib{00020813-0000-0000-C000-000000000046}\1.9 を削除しようとしましたが、これは機能しませんでした。
また、データベース ドライバーが適切に動作するように、すべての Office アプリが 64 ビット モードで実行されていることも確認しましたが、まだこの問題が発生しています。
この問題を解決するには、どの変更を実装する必要がありますか?