2011-06-25 41 views
5

我正在使用Microsoft Visual Web Developer 2010 Express創建一個網站,並使用了"createUserWizard"的工具箱。然後我把我的"CustomerInfo"表的userId添加到"data type=uniqueidentifier",因爲我需要將它鏈接到aspnet_表中的用戶名。不允許將數據類型sql_variant隱式轉換爲uniqueidentifier。使用CONVERT函數運行此查詢

後來,我需要鏈接我的"Order"表到"CustomerInfo"表,所以我把我的orderId data type=uniqueidentifier。於是,我打算插入我的訂單詳細信息到"Order"表,但我的問題:

「從數據類型隱式轉換 SQL_VARIANT到唯一標識符不 允許使用CONVERT函數來 運行此查詢。」 。

我搜索並找到一些答案,如數據類型的參數設置爲「清空」或刪除它。但然後我有這個錯誤

「從字符串轉換爲uniqueidentifier轉換失敗。」

這是我的SQL

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
            DeleteCommand="DELETE FROM [Order] WHERE [orderId] = @orderId" 
            InsertCommand="INSERT INTO [Order] ([orderId], [userId], [Services], [PickUpDate], [PickUpTime], [SpecialDate], [SpecialTime]) VALUES (@orderId, @userId, @Services, @PickUpDate, @PickUpTime, @SpecialDate, @SpecialTime)" 
            SelectCommand="SELECT * FROM [Order]" 

            UpdateCommand="UPDATE [Order] SET [userId] = @userId, [Services] = @Services, [PickUpDate] = @PickUpDate, [PickUpTime] = @PickUpTime, [SpecialDate] = @SpecialDate, [SpecialTime] = @SpecialTime WHERE [orderId] = @orderId"> 
            <DeleteParameters> 
             <asp:Parameter Name="orderId" Type="Object" /> 
            </DeleteParameters> 
            <InsertParameters> 
            <asp:Parameter Name="orderId" Type="Object" /> 
            <asp:Parameter Name="userId" Type="Object" /> 
             <asp:Parameter Name="Services" Type="String" /> 
             <asp:Parameter Name="PickUpDate" Type="String" /> 
             <asp:Parameter Name="PickUpTime" Type="String" /> 
             <asp:Parameter Name="SpecialDate" Type="String" /> 
             <asp:Parameter Name="SpecialTime" Type="String" /> 
            </InsertParameters> 
            <UpdateParameters> 
             <asp:Parameter Name="userId" Type="Object" /> 
             <asp:Parameter Name="Services" Type="String" /> 
             <asp:Parameter Name="PickUpDate" Type="String" /> 
             <asp:Parameter Name="PickUpTime" Type="String" /> 
             <asp:Parameter Name="SpecialDate" Type="String" /> 
             <asp:Parameter Name="SpecialTime" Type="String" /> 
             <asp:Parameter Name="orderId" Type="Object" /> 
            </UpdateParameters> 
           </asp:SqlDataSource> 

現在我想起來了,也許是我在VB代碼中的問題。 我會把它放在這裏,請告訴我如何做到將數據插入數據庫的正確方法。

Protected Sub OrderButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles OrderButton.Click 
    SqlDataSource1.InsertParameters(0).DefaultValue = Now 
    SqlDataSource1.Insert() 
    Response.Redirect("~/Customer/AfterOrder.aspx") 
End Sub 
+0

如果你想讓別人告訴你它有什麼問題,你需要發佈你的SQL。我們還需要表格中列的定義。 –

回答

7

如果你想從你的代碼中插入GUID,你應該做的參數類型GUID

<asp:Parameter Name="ParamName" DbType="Guid" /> 

而且你應該通過GUID值(C#):

SqlDataSource1.InsertParameters["ParamName"].DefaultValue = System.Guid.NewGuid().ToString(); 

如果您想要傳遞一個字符串值,您必須在插入查詢中使用CONVERT(UNIQUEIDENTIFIER,'YOUR VALUE'),如下所示:

InsertCommand="INSERT INTO [Order] ([UserId], [etc]) 
VALUES (CONVERT(UNIQUEIDENTIFIER,@UserId), @etc)" 
相關問題