如果affected是1,而数据库没有更新,应该有两种可能:
(1)违反了数据库的某个完整性约束,更新后回滚了。
(2)如果OldValuesParameterFormatString属性没有修改,则默认值为{0},即Update中与字段名重名那些参数都被认为取旧值,相当于用旧值修改旧值。如原来a,b两个自动值分别为1,2,则
Update t Set a=@a Where b=@b
相当于:
Update t Set a=1 Where b=2
虽然更新了1行,内容没有变。
未找到要更新的记录(即更新了0行)。
UpdateCommand为以下形式,更新列参数名与列名相同,选择条件参数前面加上original_
Update 表名 Set Field1=@Field1, Filed2=@Field2 Where KeyField=@original_KeyField
然后将SqlDataSource的OldValuesParameterFormatString属性设置为:original_{0}