残念ながら、勢力が強く、不運にもレコードを更新しようとしているため、Microsoft Accessを使用しています。 C#OleDbConnectionを使用したMicrosoft Access UPDATEコマンドとコマンドが動作しない
この
はコードです:private void UpdateContact(Contact contact)
{
using (OleDbConnection db = new OleDbConnection(_connString))
{
string query = "UPDATE [Contact] SET [FirstName] = @FirstName, [LastName] = @LastName, [MobileNumber] = @MobileNumber WHERE [Id] = @Id";
OleDbCommand cmd = new OleDbCommand(query, db) { CommandType = CommandType.Text };
cmd.Parameters.AddWithValue("@Id", contact.Id);
cmd.Parameters.AddWithValue("@FirstName", contact.FirstName);
cmd.Parameters.AddWithValue("@LastName", contact.LastName);
cmd.Parameters.AddWithValue("@MobileNumber", contact.MobileNumber);
db.Open();
int rowsAffected = cmd.ExecuteNonQuery();
db.Close();
}
}
すべては、例外なく、なしにrowsAffectedは、いずれかの罰金のようです。常に0が返されます。 デバッグ中に値をチェックし、その値を保持する必要があります。 MS Access 2007で作成されたアクセスファイルの種類は2002-2003です。
私は間違って何を考えていますか?
あなたのパラメータを追加し
を試してみてくださいそれは長い時間を過ごしていた...頭のバンジーン 'から私を助けて、チップのために余裕があった –
MS Accessは本当に吸う。標準的なSQLルールに従っていなくても。私は自分のクエリにパラメータを渡していますが、そのSQLクエリでは名前でパラメータを言及していますが、MSアクセスはパラメータ名を無視して、クエリに現れるフィールドのシーケンスで取ります。このような良いデータベースバックエンドの本当に奇妙な動作。 –