2017-07-21 3 views
0

L'exception se litLors de l'insertion dans mon formulaire. la clé primaire qui est un GUID génère une erreur de conversion

conversion implicite du type de données sql_variant à uniqueidentifier n'est pas autorisé. Utilisez la fonction CONVERT pour exécuter cette requête.

Je ne sais pas vraiment où mettre la fonction Convert. le code derrière la page est intacte consistant en un vide Page_Load. la plupart du code était glisser et déposer de la boîte à outils. la page aspx est la suivante.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" 
Inherits="LocalDbExample.WebForm1" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
    <div> 

     <asp:FormView ID="FormView1" runat="server" 
DataKeyNames="CustomerId" DataSourceID="customerSqlDataSource" 
AllowPaging="True"> 
      <EditItemTemplate> 
       CustomerId: 
       <asp:Label ID="CustomerIdLabel1" runat="server" Text='<%# 
Eval("CustomerId") %>' /> 
       <br /> 
       Name: 
       <asp:TextBox ID="NameTextBox" runat="server" Text='<%# 
Bind("Name") %>' /> 
       <br /> 
       Address: 
       <asp:TextBox ID="AddressTextBox" runat="server" Text='<%# 
Bind("Address") %>' /> 
       <br /> 
       City: 
       <asp:TextBox ID="CityTextBox" runat="server" Text='<%# 
Bind("City") %>' /> 
       <br /> 
       State: 
       <asp:TextBox ID="StateTextBox" runat="server" Text='<%# 
Bind("State") %>' /> 
       <br /> 
       PostalCode: 
       <asp:TextBox ID="PostalCodeTextBox" runat="server" Text='<%# 
Bind("PostalCode") %>' /> 
       <br /> 
       Notes: 
       <asp:TextBox ID="NotesTextBox" runat="server" Text='<%# 
Bind("Notes") %>' /> 
       <br /> 
       <asp:LinkButton ID="UpdateButton" runat="server" 
CausesValidation="True" CommandName="Update" Text="Update" /> 
       &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
      </EditItemTemplate> 
      <InsertItemTemplate> 
       CustomerId: 
       <asp:TextBox ID="CustomerIdTextBox" runat="server" Text='<%# 
Bind("CustomerId") %>' /> 
       <br /> 
       Name: 
       <asp:TextBox ID="NameTextBox" runat="server" Text='<%# 
Bind("Name") %>' /> 
       <br /> 
       Address: 
       <asp:TextBox ID="AddressTextBox" runat="server" Text='<%# 
Bind("Address") %>' /> 
       <br /> 
       City: 
       <asp:TextBox ID="CityTextBox" runat="server" Text='<%# 
Bind("City") %>' /> 
       <br /> 
       State: 
       <asp:TextBox ID="StateTextBox" runat="server" Text='<%# 
Bind("State") %>' /> 
       <br /> 
       PostalCode: 
       <asp:TextBox ID="PostalCodeTextBox" runat="server" Text='<%# 
Bind("PostalCode") %>' /> 
       <br /> 
       Notes: 
       <asp:TextBox ID="NotesTextBox" runat="server" Text='<%# 
Bind("Notes") %>' /> 
       <br /> 
       <asp:LinkButton ID="InsertButton" runat="server" 
CausesValidation="True" CommandName="Insert" Text="Insert" /> 
       &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
CausesValidation="False" CommandName="Cancel" Text="Cancel" /> 
      </InsertItemTemplate> 
      <ItemTemplate> 
       CustomerId: 
       <asp:Label ID="CustomerIdLabel" runat="server" Text='<%# 
Eval("CustomerId") %>' /> 
       <br /> 
       Name: 
       <asp:Label ID="NameLabel" runat="server" Text='<%# 
Bind("Name") %>' /> 
       <br /> 
       Address: 
       <asp:Label ID="AddressLabel" runat="server" Text='<%# 
Bind("Address") %>' /> 
       <br /> 
       City: 
       <asp:Label ID="CityLabel" runat="server" Text='<%# 
Bind("City") %>' /> 
       <br /> 
       State: 
       <asp:Label ID="StateLabel" runat="server" Text='<%# 
Bind("State") %>' /> 
       <br /> 
       PostalCode: 
       <asp:Label ID="PostalCodeLabel" runat="server" Text='<%# 
Bind("PostalCode") %>' /> 
       <br /> 
       Notes: 
       <asp:Label ID="NotesLabel" runat="server" Text='<%# 
Bind("Notes") %>' /> 
       <br /> 
       <asp:LinkButton ID="EditButton" runat="server" 
CausesValidation="False" CommandName="Edit" Text="Edit" /> 
       &nbsp;<asp:LinkButton ID="DeleteButton" runat="server" 
CausesValidation="False" CommandName="Delete" Text="Delete" /> 
       &nbsp;<asp:LinkButton ID="NewButton" runat="server" 
CausesValidation="False" CommandName="New" Text="New" /> 
      </ItemTemplate> 
     </asp:FormView> 

    </div> 
    <asp:SqlDataSource ID="customerSqlDataSource" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
SelectCommand="SELECT * FROM [Customers]" DeleteCommand="DELETE FROM 
[Customers] 
WHERE [CustomerId] = @CustomerId" InsertCommand="INSERT INTO [Customers] 
([CustomerId], [Name], [Address], [City], [State], [PostalCode], [Notes]) 
VALUES (@CustomerId, @Name, @Address, @City, @State, @PostalCode, @Notes)" 
UpdateCommand="UPDATE [Customers] SET [Name] = @Name, [Address] = @Address, 
[City] = @City, [State] = @State, [PostalCode] = @PostalCode, [Notes] = 
@Notes 
WHERE [CustomerId] = @CustomerId"> 
     <DeleteParameters> 
      <asp:Parameter Name="CustomerId" Type="Object" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:Parameter Name="CustomerId" Type="Object" /> 
      <asp:Parameter Name="Name" Type="String" /> 
      <asp:Parameter Name="Address" Type="String" /> 
      <asp:Parameter Name="City" Type="String" /> 
      <asp:Parameter Name="State" Type="String" /> 
      <asp:Parameter Name="PostalCode" Type="String" /> 
      <asp:Parameter Name="Notes" Type="String" /> 
     </InsertParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="Name" Type="String" /> 
      <asp:Parameter Name="Address" Type="String" /> 
      <asp:Parameter Name="City" Type="String" /> 
      <asp:Parameter Name="State" Type="String" /> 
      <asp:Parameter Name="PostalCode" Type="String" /> 
      <asp:Parameter Name="Notes" Type="String" /> 
      <asp:Parameter Name="CustomerId" Type="Object" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 
</form> 
</body> 
</html> 

La base de données est une table écrite comme suit.

CREATE TABLE [dbo].[Customers] (
    [CustomerId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, 
    [Name]  VARCHAR (50)  NOT NULL, 
    [Address] VARCHAR (50)  NOT NULL, 
    [City]  VARCHAR (50)  NOT NULL, 
    [State]  VARCHAR (50)  NOT NULL, 
    [PostalCode] VARCHAR (50)  NOT NULL, 
    [Notes]  VARCHAR (MAX) NULL, 
    PRIMARY KEY CLUSTERED ([CustomerId] ASC) 
); 
+0

Quel est le type de données CustomerId dans la base de données? –

+0

UNIQUEIDENTIFIER – Roger

+0

Et vous obtenez une erreur lors de l'affichage des données ou lors de l'insertion de nouvelles données dans la table? –

Répondre

0

Je pense, puisque CustomerID est généré automatiquement, vous devez le retirer de la « Paramètres » Insertion:

<InsertParameters> 
    <asp:Parameter Name="CustomerId" Type="Object" /> <-- remove