无法正确解析字符串到GUID

时间:2014-04-19 19:57:26

标签: asp.net sql-server vb.net guid

我正在执行存储过程但最终出现错误消息:

  

结果空间不足,无法将uniqueidentifier值转换为char。

myGuid被指定为:

myGuid = Guid.Parse(objOrder.orderId.ToString)

我确保objOrder.orderId的值是一个有效的GUID(包含36个字符)。我甚至尝试过:

Guid.Parse("cc1abb29-9a8d-476a-9046-db417b30d917")

并且

    Try
        myGuid = New Guid(objOrder.orderId.ToString)
    Catch ex As Exception
        MsgBox("Error")
    End Try

没有错误。

但每当我为myGuid分配一个新的指南时,例如:

myGuid = Guid.NewGuid()

工作正常。所以它与我的数据库没有关系。我已经尝试比较它们的值/格式(在messageboxes和firebug中,因为我使用的是ASP.NET),但两者是相同的。为什么我的存储过程不接受已解析的GUID但接受新生成的GUID?

这就是我在VB.NET中调用存储过程的方式:

    Dim result As String = ""
    result = MicrosoftDB.ExecuteScalar(Of String)(
    "sp_order_save",
    CommandType.StoredProcedure,
    GlobalClass.GetConnectionString(),
    New SqlParameter("orderId", myGuid),
    New SqlParameter("customerId", objOrder.customerId),
    New SqlParameter("employeeId", objOrder.employeeId),
    New SqlParameter("orderDate", Now.Date),
    New SqlParameter("shipName", objOrder.shipName),
    New SqlParameter("shipAddress", objOrder.shipAddress),
    ...
    )

我存储过程的变量'数据类型:

     @orderId uniqueidentifier
    ,@customerId bigint
    ,@employeeId bigint
    ,@orderDate date
    ,@shipName varchar(250)
    ,@shipAddress varchar(250)
    ,@shipCity varchar(50)
    ...

0 个答案:

没有答案