含JOIN的更新查询问题:GridView关联表数据更新语句失效
搞定GridView更新无效的问题
嘿,我来帮你排查这个更新没效果的问题!首先看你写的UPDATE语句,有个很关键的小错误:
- WHERE子句里的字段名写错了:你写的
[Files.ID]应该是[Files.FileID],毕竟你的SELECT语句里用的是Files.FileID来标识每条记录,参数也是@FileID,这个字段名写错直接让数据库找不到要更新的行,自然就没效果啦。
另外提个小建议,你的SELECT语句里的WHERE Files.CategoryID = Categories.CategoryID是多余的,因为INNER JOIN已经靠这个条件关联两张表了,删掉它语句会更简洁。
修正后的UPDATE语句
UPDATE [Files] SET [CategoryID] = @CategoryID, [Filename] = @Filename, [Description] = @Description, [IsPublished] = @IsPublished, [IsArchived] = @IsArchived WHERE [Files.FileID] = @FileID
额外要注意的点
你在GridView里展示的Category是分类表的Description,但实际更新的是Files表的CategoryID外键,这个逻辑是对的——只要保证@CategoryID是用户选择的分类对应的ID值(不是分类名称),更新后重新绑定GridView,就能正确显示对应的分类名称了。
如果还是不行,你可以检查这几个地方:
- 确认GridView的
DataKeyNames有没有设置为FileID,确保@FileID参数能正确传递到更新语句里 - 检查
Files表的主键是不是FileID,保证这个字段能唯一定位每一行 - 验证
@CategoryID是不是有效的分类ID,要是传了不存在的ID,更新后分类显示会出问题
内容的提问来源于stack exchange,提问作者Olliecycles
相关产品推荐
相关产品推荐

