簡體   English   中英

不允許從數據類型 sql_variant 隱式轉換為 uniqueidentifier。 使用 CONVERT 函數運行此查詢

[英]Implicit conversion from data type sql_variant to uniqueidentifier is not allowed. Use the CONVERT function to run this query

我現在正在使用 Microsoft Visual Web Developer 2010 Express 創建一個網站,並且我使用了"createUserWizard"工具箱。 然后我將"CustomerInfo"表的userId放入"data type=uniqueidentifier"因為我需要將它鏈接到 aspnet_ 表中的用戶名。

稍后,我需要將我的"Order"表鏈接到"CustomerInfo"表,所以我把我的orderId data type=uniqueidentifier 然后,我計划將我的訂單詳細信息插入到"Order"表中,但我遇到了以下問題:

“不允許從數據類型 sql_variant 隱式轉換為 uniqueidentifier。使用 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

如果你想從你的代碼中插入 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)" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM