私はプログラミングにかなり新しいので、やさしくしてください。私は、GUID = order.SelectOpponentID(のorderID)として暗いopponentIDは以下 System.InvalidCastException:Guidを選択しようとしたときに、指定されたキャストが無効です
..私はそれを呼び出すのはここだopponentID にtblOrdersで一意識別子である「対戦相手」の値を格納するをさしようとしています私が試みたコードが、私は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
がNULL可能で、それですカラム?また、 'OrderID'の代わりに' New SqlParameter( "@ orderID ...'を使用してください。 –
これは解決しませんでしたが、あなたが言ったようにデータがnullだったというエラーをスローしました。 – Eggybread
サイドノートと同様に、テーブルのキー列としてGUIDを使用することは賢明ではありません。その列のインデックスは断片化されている可能性があります。クエリのパフォーマンスが悪い –