私は大学向けの小さなアプリケーション、ビデオレンタルアプリケーションを書いています。データベースからの読み取りに問題はありませんが、テーブルのデータを更新できません。
特に、誰かが映画をレンタルした後、在庫のある映画の数量を表示するセルを更新しようとしています。
これまで私はこれを試してきました:
string updateDVDs = "UPDATE Products SET dvd_quantity = " + product.Quantity + " WHERE title = '"+ product.Name +"';";
cmdUpdateDVDs = new SqlCeCommand(updateDVDs, dBConnection);
dBConnection.Open();
cmdUpdateDVDs.ExecuteNonQuery();
dBConnection.Close();
エラーは発生しませんが、テーブルのセルが更新されません。ご不明な点がございましたら、お気軽にお問い合わせください。
更新:わかりました。 興味深い開発がいくつかあります。コードを次のように更新しました。
string updateDVDs = "UPDATE Products SET dvd_quantity = " + product.Quantity + " WHERE title = '" + product.Name + "'";
dBConnection = new SqlCeConnection(connectionString);
cmdUpdateDVDs = new SqlCeCommand(updateDVDs, dBConnection);
cmdUpdateDVDs.Connection.Open();
int rows = cmdUpdateDVDs.ExecuteNonQuery();
dBConnection.Close();
MSDNを見ると、どちらの方法も有効であることがわかりますが、この2番目の方法は機能しているようです。今、奇妙なことに、私は映画「ダイ・ハード」を借りています、それはすべて泳ぎに行きます、私はこれらの結果を得ます:
よし、この時点から戻る方法はないので、アプリケーションを終了してやり直します。もう一度「ダイ・ハード」を借りて確認し、成功!! DVDの数量の新しい読み取り値は、予想どおり0です。
しかし、Visual StudioでProductテーブルを開くと、元の値はまだそこにあります。
それだけでなく、Visual Studioでテーブルを開いた後でアプリケーションを再度実行すると、DVDの数量が元の値にリセットされ、更新された値が失われます。
ここで簡単なものが欠けていますか?テーブルを更新してみましたが、違いはありません。Visual Studioでテーブルを開かない限り、アプリケーションは、何度実行しても、テーブル自体を開くまで、期待どおりに更新されます。