页面上有一个SqlDataSource,有一个FormView,调用删除语句FormView1.DeleteItem(),VS2005生成了SQL语句,语句如下:
exec sp_executesql N'DELETE FROM [TBF_A] WHERE [SID] = @original_SID AND [A1a] = @original_A1a AND [A1b] = @original_A1b AND [A2a] = @original_A2a AND [A2b] = @original_A2b AND [A2] = @original_A2 AND [A3a1] = @original_A3a1 AND [A3a2] = @original_A3a2 AND [A3b1] = @original_A3b1 AND [A3b2] = @original_A3b2 AND [A3c1] = @original_A3c1 AND [A3c2] = @original_A3c2 AND [A3d1] = @original_A3d1 AND [A3d2] = @original_A3d2 AND [A3e1] = @original_A3e1 AND [A3e2] = @original_A3e2 AND [A3e3] = @original_A3e3 AND [A3e4] = @original_A3e4 AND [A3f1] = @original_A3f1 AND [A3f2] = @original_A3f2 AND [A3g1] = @original_A3g1 AND [A3g2] = @original_A3g2 AND [A4_1] = @original_A4_1 AND [A4_2] = @original_A4_2 AND [A5] = @original_A5 AND [A6] = @original_A6 AND [A6a] = @original_A6a AND [A6b] = @original_A6b AND [A6c] = @original_A6c AND [A7] = @original_A7 AND [A8] = @original_A8', N'@original_SID nvarchar(1),@original_A1a int,@original_A1b nvarchar(4000),@original_A2a nvarchar(4000),@original_A2b nvarchar(4000),@original_A2 nvarchar(4000),@original_A3a1 nvarchar(4000),@original_A3a2 nvarchar(4000),@original_A3b1 nvarchar(4000),@original_A3b2 nvarchar(4000),@original_A3c1 nvarchar(4000),@original_A3c2 nvarchar(4000),@original_A3d1 nvarchar(4000),@original_A3d2 nvarchar(4000),@original_A3e1 nvarchar(4000),@original_A3e2 nvarchar(4000),@original_A3e3 nvarchar(4000),@original_A3e4 nvarchar(4000),@original_A3f1 nvarchar(4000),@original_A3f2 nvarchar(4000),@original_A3g1 nvarchar(4000),@original_A3g2 nvarchar(4000),@original_A4_1 nvarchar(4000),@original_A4_2 nvarchar(4000),@original_A5 nvarchar(4000),@original_A6 nvarchar(4000),@original_A6a nvarchar(4000),@original_A6b nvarchar(4000),@original_A6c nvarchar(4000),@original_A7 nvarchar(4000),@original_A8 nvarchar(4000)', @original_SID = N'5', @original_A1a = 1, @original_A1b = NULL, @original_A2a = NULL, @original_A2b = NULL, @original_A2 = NULL, @original_A3a1 = NULL, @original_A3a2 = NULL, @original_A3b1 = NULL, @original_A3b2 = NULL, @original_A3c1 = NULL, @original_A3c2 = NULL, @original_A3d1 = NULL, @original_A3d2 = NULL, @original_A3e1 = NULL, @original_A3e2 = NULL, @original_A3e3 = NULL, @original_A3e4 = NULL, @original_A3f1 = NULL, @original_A3f2 = NULL, @original_A3g1 = NULL, @original_A3g2 = NULL, @original_A4_1 = NULL, @original_A4_2 = NULL, @original_A5 = NULL, @original_A6 = NULL, @original_A6a = NULL, @original_A6b = NULL, @original_A6c = NULL, @original_A7 = NULL, @original_A8 = NULL我是单机调试,查询后就删除。但是显示影响的行数为0,就是没有把数据删除。
请问:为什么VS2005会生成SQLServer2000不支持的语句?

解决方案 »

  1.   

    你语句自己写sql语句 删除 看能不能删除 
      

  2.   

    SqlDataSource 自己生成的delete语句后面的where条件很长很多,几乎包括了所有字段。这样同时可能你的表中的数据还不能全部满足那些条件。你去掉一些。只用一个标识列字段(或你表中的是惟一值的字段)
      

  3.   

    原因我是知道的,SqlDataSource我选的是“使用开放式并发”,所以每个字段都比较。而SQLServer中NULL不能用等于号。问题是两个都是微软的产品,居然生成的SQL语句不能用。我觉得这是一个典型问题,但是没有人能完满回答。