Ron Ron - 9 days ago 3
ASP.NET (C#) Question

No value given for one or more required parameters. when updating entry

I am getting the following error message when trying to update customer details. I am using detailsview.


Exception Details: System.Data.OleDb.OleDbException: No value given
for one or more required parameters.


I found here that this is normally related to a value which is Null or a zero-length string. So far so good, but how can I fix it?

Insert and Delete work fine. Even Update used to work, but something must have changed and I just cannot figure out what.

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>

Answer

In your query

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

I count 12 parameter placeholders while your parameter list contains only 11 parameters
Particularly suspicious is the latest one. It is not possible to pass a column name as parameter.
What are you trying to do there? If you remove the AND ? IS NULL it should works

Comments