2013-04-25 13 views
2

嘗試更新客戶詳細信息時,出現以下錯誤消息。我正在使用detailsview。對於一個或多個所需參數沒有給出值。當更新條目

異常詳細信息:System.Data.OleDb.OleDbException:對於一個或多個所需參數,未給定值 。

我在這裏發現,這通常與一個值爲空或零長度的字符串有關。到目前爲止這麼好,但我該如何解決它?

插入和刪除工作正常。甚至更新曾經工作,但事情必須改變,我只是無法弄清楚什麼。

UpdateCommand="UPDATE [Customers] SET [CompanyName] = ?, [ContactName] = ?, [ContactTitle] = ?, [Address] = ?, [City] = ?, [Region] = ?, [PostalCode] = ?, [Country] = ?, [Phone] = ?, [Fax] = ? WHERE (([CustomerID] = ?) OR ([CustomerID] IS NULL AND ? IS NULL))"> 

<UpdateParameters> 
       <asp:Parameter Name="CompanyName" Type="String" /> 
       <asp:Parameter Name="ContactName" Type="String" /> 
       <asp:Parameter Name="ContactTitle" Type="String" /> 
       <asp:Parameter Name="Address" Type="String" /> 
       <asp:Parameter Name="City" Type="String" /> 
       <asp:Parameter Name="Region" Type="String" /> 
       <asp:Parameter Name="PostalCode" Type="String" /> 
       <asp:Parameter Name="Country" Type="String" /> 
       <asp:Parameter Name="Phone" Type="String" /> 
       <asp:Parameter Name="Fax" Type="String" /> 
       <asp:Parameter Name="CustomerID" Type="String" /> 
</UpdateParameters> 

<FieldHeaderStyle CssClass="fieldheader"></FieldHeaderStyle> 
      <Fields> 
       <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="False" 
        SortExpression="CustomerID" /> 
       <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" 
        SortExpression="CompanyName" /> 
       <asp:BoundField DataField="ContactName" HeaderText="ContactName" 
        SortExpression="ContactName" /> 
       <asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" 
        SortExpression="ContactTitle" /> 
       <asp:BoundField DataField="Address" HeaderText="Address" 
        SortExpression="Address" /> 
       <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" /> 
       <asp:BoundField DataField="Region" HeaderText="Region" 
        SortExpression="Region" /> 
       <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" 
        SortExpression="PostalCode" /> 
       <asp:BoundField DataField="Country" HeaderText="Country" 
        SortExpression="Country" /> 
       <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" /> 
       <asp:BoundField DataField="Fax" HeaderText="Fax" SortExpression="Fax" /> 
       <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> 
      </Fields> 
+0

這是SQL Server或訪問?請注意,SQL Server使用命名參數,Access使用索引參數。 – Dai 2013-04-25 22:55:03

回答

1

在查詢

UPDATE Customers] SET [CompanyName] = ?, 
         [ContactName] = ?, 
         [ContactTitle] = ?, 
         [Address] = ?, 
         [City] = ?, 
         [Region] = ?, 
         [PostalCode] = ?, 
         [Country] = ?, 
         [Phone] = ?, 
         [Fax] = ? 
WHERE (([CustomerID] = ?) OR ([CustomerID] IS NULL AND ? IS NULL)) 

我算12個參數佔位符,而你的參數列表中只包含11個參數
特別可疑的是最新的一個。無法傳遞列名作爲參數。
你在那裏做什麼?如果您刪除AND ? IS NULL應該作品

+0

完美史蒂夫,就是這樣。它效果很好。非常感謝您的快速幫助! :) – Ron 2013-04-25 23:23:52

-1

移除((λ爲NULL))解決它

+0

也許你可以解釋這將如何解決這個問題。 – jkris 2016-11-23 07:46:58

相關問題