我對編程相當陌生,請保持溫和。我想將「對手」,這是一個唯一標識符tblOrders到opponentID 的價值此處,我把它叫做..System.InvalidCastException:嘗試選擇Guid時指定的強制轉換無效
昏暗opponentID作爲的Guid = order.SelectOpponentID(單編號)
下面是我嘗試過的代碼,但我得到System.InvalidCastException:指定的轉換無效。如果任何人都可以請調整這對我來說,我將非常感激..
VB代碼
Public Function SelectOpponentID(ByVal orderID As Guid)
Dim DBConnect As New DBConn
Using db As DbConnection = DBConnect.Conn("DBConnectionString")
Dim cmd As SqlCommand = DBConnect.Command(db, "SelectOpponentID")
cmd.Parameters.Add(New SqlParameter("orderID", SqlDbType.UniqueIdentifier, ParameterDirection.Input)).Value = orderID
db.Open()
Dim DR As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Dim opponentID As Guid
While DR.Read
opponentID = DR("opponent")
End While
DR.Close()
DR = Nothing
cmd.Dispose()
cmd = Nothing
db.Dispose()
db.Close()
End Using
End Function
SQL代碼
ALTER PROCEDURE [dbo].[SelectOpponentID]
@orderID uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
SELECT opponent
FROM tblOrders
WHERE orderID = @orderID
END
它是一個可空柱?此外,使用'新SqlParameter(「@ orderID ...'而不是'orderID'。 –
這並沒有解決它,但它確實會拋出一個錯誤,說你的數據是空的,所以我修復了數據,現在我已經排序了,謝謝你,我也錯過了一個'返回' – Eggybread
正如一個側面提示,使用guid作爲表中的關鍵列是一個糟糕的選擇,該列上的任何索引都可能變成碎片並且會有可憐的查詢性能 –