请问为什么vwd2008会生成这么怪的SQL呢?

wjc0123 2009-01-27 10:47:02
偶的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)这句。
要是每次都要删除这几句才能用的话很不方便呀~
谢谢!
...全文
88 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjc0123 2009-01-27
  • 打赏
  • 举报
回复
刚刚重装VWD后还是这样~~~

麻烦哪位装有VWD2008的大大试下看在您的电脑上会出现这种情况吗?
koukoujiayi 2009-01-27
  • 打赏
  • 举报
回复
access数据源控件没怎么用,特地试了一下,没有楼主所述问题哦!!
设置了开放式并发,全部自动生成!!
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="AccessDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True" />
<asp:BoundField DataField="id" HeaderText="id" ReadOnly="True"
SortExpression="id" />
<asp:BoundField DataField="idEbEduCollege" HeaderText="idEbEduCollege"
SortExpression="idEbEduCollege" />
<asp:BoundField DataField="bmmc" HeaderText="bmmc" SortExpression="bmmc" />
<asp:BoundField DataField="available" HeaderText="available"
SortExpression="available" />
</Columns>
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
ConflictDetection="CompareAllValues" DataFile="~/App_Data/dbforlyc1.mdb"
DeleteCommand="DELETE FROM [ebEduDept] WHERE [id] = ? AND [idEbEduCollege] = ? AND [bmmc] = ? AND [available] = ?"
InsertCommand="INSERT INTO [ebEduDept] ([id], [idEbEduCollege], [bmmc], [available]) VALUES (?, ?, ?, ?)"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT * FROM [ebEduDept]"
UpdateCommand="UPDATE [ebEduDept] SET [idEbEduCollege] = ?, [bmmc] = ?, [available] = ? WHERE [id] = ? AND [idEbEduCollege] = ? AND [bmmc] = ? AND [available] = ?">
<DeleteParameters>
<asp:Parameter Name="original_id" Type="Int32" />
<asp:Parameter Name="original_idEbEduCollege" Type="Int32" />
<asp:Parameter Name="original_bmmc" Type="String" />
<asp:Parameter Name="original_available" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="idEbEduCollege" Type="Int32" />
<asp:Parameter Name="bmmc" Type="String" />
<asp:Parameter Name="available" Type="Int32" />
<asp:Parameter Name="original_id" Type="Int32" />
<asp:Parameter Name="original_idEbEduCollege" Type="Int32" />
<asp:Parameter Name="original_bmmc" Type="String" />
<asp:Parameter Name="original_available" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="id" Type="Int32" />
<asp:Parameter Name="idEbEduCollege" Type="Int32" />
<asp:Parameter Name="bmmc" Type="String" />
<asp:Parameter Name="available" Type="Int32" />
</InsertParameters>
</asp:AccessDataSource>

我的MDB数据库是在App_Data目录下
king19840811 2009-01-27
  • 打赏
  • 举报
回复
关注
wjc0123 2009-01-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 koukoujiayi 的回复:]
是不是用了强类型的DataSet??
[/Quote]

没有啊,都是默认的,我就是开机---进VWD---添加mdb---拖数据源控件,然后查看源视图,那SQL就是那样写的了~
晕~
koukoujiayi 2009-01-27
  • 打赏
  • 举报
回复
是不是用了强类型的DataSet??
wjc0123 2009-01-27
  • 打赏
  • 举报
回复
ddd
ZJ159 2009-01-27
  • 打赏
  • 举报
回复
比较难啊 顶顶
HDNGO 2009-01-27
  • 打赏
  • 举报
回复
工具做的越来越智能。。。是好。。还是不好。。。
wjc0123 2009-01-27
  • 打赏
  • 举报
回复
upupupupup!

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧