主キー値が更新されるたびに、(主キー値に基づいて) sql-server-ce データベースから古い行を削除しようとしています。
目標は、(新しい ID が提供されたら)insert ステートメントを使用して新しいエントリを追加し、古いエントリを削除することです。データベース自体の主キー (都市タグ番号) のデータ型は int であり、C# 変数 originalCTag は var と宣言されていましたが、宣言時に "" (空の文字列) が割り当てられ、その後割り当てられたことを知っておくことが重要な場合があります。目的のターゲット主キー値の文字列表現。
これは単純な作業のはずですが、ここに質問があります。
SQL アクション クエリが機能しないのはなぜですか? WebMatrix で C# を使用して、私が試したことは次のとおりです。
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = " + originalCTag);
^これは、等号のインデックスでクエリの解析中にエラーが発生したことを示しています。
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", originalCTag);
^これは、入力文字列の形式が正しくなかったことを示しています。
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", int.Parse(originalCTag));
^これは、入力文字列の形式が正しくなかったことを示しています。
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = @0", originalCTag.ToString());
^これは (もう一度) 入力文字列が正しい形式ではなかったことを示しています (DELETE ステートメントでクエリをパラメーター化できませんか)?
だから...最後に、私は試しました:
db.Execute("DELETE FROM Vaccinations WHERE [City Tag Number] = '" + originalCTag + "'");
^これはエラーを生成しませんが、想定されていることも実行しません (たとえば、行を削除します)。
この時点で、私は途方に暮れています。これらのステートメントの少なくとも 1 つが、必要な機能を実行することを期待します。
明らかに、ここで何かが欠けています (そして、その何かが明白であったとしても驚かないでしょう)。これらのステートメントのいずれかが「機能するはず」の場合、db.Execute ステートメントの前のコードに何か問題がある可能性があります。
-------------------UPDATE----------------- db宣言文を見たい場合:
var db = Database.Open("Vaccinations");
はい、Vaccinations はデータベースの名前であり、そのデータベース内の (唯一の) テーブルです。