请问为什么vwd2008会生成这么怪的SQL呢?
偶的VWD2008如果使用MDB当数据库,然后只要在数据源控件里把[使用开放式并发]选上,在源视图里生成的查询就会成这样:
----------------------------------------------------------
DeleteCommand="DELETE FROM [table1] WHERE [ID] = ? AND (([bookname] = ?) OR ([bookname] IS NULL AND ? IS NULL)) AND (([bookprice] = ?) OR ([bookprice] IS NULL AND ? IS NULL))"
<DeleteParameters>
<asp:Parameter Name="original_ID" Type="Int32" />
<asp:Parameter Name="original_bookname" Type="String" />
<asp:Parameter Name="original_bookprice" Type="Decimal" />
</DeleteParameters>
----------------------------------------------------------
UpdateCommand="UPDATE [table1] SET [bookname] = ?, [bookprice] = ? WHERE [ID] = ? AND (([bookname] = ?) OR ([bookname] IS NULL AND ? IS NULL)) AND (([bookprice] = ?) OR ([bookprice] IS NULL AND ? IS NULL))">
<UpdateParameters>
<asp:Parameter Name="bookname" Type="String" />
<asp:Parameter Name="bookprice" Type="Decimal" />
<asp:Parameter Name="original_ID" Type="Int32" />
<asp:Parameter Name="original_bookname" Type="String" />
<asp:Parameter Name="original_bookprice" Type="Decimal" />
</UpdateParameters>
测试时只要一删除或者编辑记录立马出错:异常详细信息: System.Data.OleDb.OleDbException: 至少一个参数没有被指定值。
请问为什么不管是delete还是update语句的占位符都比参数要多2个呢?
请问是我的VWD坏了还是这是Express版的Bug?
我用另一台电脑的VWD2005按同样步骤执行后生成的SQL语句里没有or后面那段,比如delete语句里就没有OR ([bookname] IS NULL AND ? IS NULL)这句和OR ([bookprice] IS NULL AND ? IS NULL)这句。
要是每次都要删除这几句才能用的话很不方便呀~
谢谢!