加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 不允许从数据类型sql_variant到uniqueidentifier的隐

发布时间:2020-12-16 07:09:48 所属栏目:asp.Net 来源:网络整理
导读:我正在使用Microsoft Visual Web Developer 2010 Express创建一个网站,我使用了“createUserWizard”工具箱.然后我将userId用于我的“CustomerInfo”表到“data type = uniqueidentifier”,因为我需要将它链接到aspnet_表中的用户名. 稍后,我需要将“Order”
我正在使用Microsoft Visual Web Developer 2010 Express创建一个网站,我使用了“createUserWizard”工具箱.然后我将userId用于我的“CustomerInfo”表到“data type = uniqueidentifier”,因为我需要将它链接到aspnet_表中的用户名.

稍后,我需要将“Order”表链接到“CustomerInfo”表,因此我将orderId数据类型= uniqueidentifier.然后,我计划将我的订单详细信息插入“订单”表,但我遇到的问题是:

“Implicit conversion from data type
sql_variant to uniqueidentifier is not
allowed. Use the CONVERT function to
run this query”.

我搜索并找到一些答案,如参数设置为“空”的数据类型或删除它.但后来我有这个错误

” Conversion failed when converting from character string to 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)"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读