0
我試圖使用ExecuteScalar
返回uniqueidentifier
。然而,當我嘗試運行它,我得到這個錯誤:ExecuteScalar從'System.String'無效強制轉換爲'System.Guid'
Invalid cast from 'System.String' to 'System.Guid'.
Exception Details: System.InvalidCastException: Invalid cast from 'System.String' to 'System.Guid'.
我後面的代碼看起來是這樣的:
Dim id As String = HttpContext.Current.Session("id")
Dim file As String = HttpContext.Current.Session("file")
connectionstring = ConfigurationManager.ConnectionStrings("ConnectionString1").ConnectionString.ToString
Dim SQLConnection As New SqlConnection(connectionstring)
SQLConnection.Open()
Dim cmd As SqlCommand = New SqlCommand("GetFile", SQLConnection)
Dim param1 As New SqlParameter()
param1.ParameterName = "@id"
param1.SqlDbType = SqlDbType.UniqueIdentifier
param1.Direction = ParameterDirection.Input
param1.Value = id
Dim param2 As New SqlParameter()
param2.ParameterName = "@file"
param2.SqlDbType = SqlDbType.UniqueIdentifier
param2.Direction = ParameterDirection.Input
param2.Value = file
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "GetFile"
cmd.Parameters.Add(param1)
cmd.Parameters.Add(param2)
cmd.ExecuteScalar()
If cmd.ExecuteScalar.ToString = Nothing Then
HttpContext.Current.Response.Redirect("Login.aspx")
Else
HttpContext.Current.Session("fileguid") = cmd.ExecuteScalar
End If
存儲過程定義了這兩個參數:
@id uniqueidentifier,
@file uniqueidentifier
它只是使用這兩個參數來驗證它們存在於同一記錄中。 選擇語句是:
SELECT [file] FROM [dbo].[files] WHERE [cid] = @id AND [file] = @file
希望你能幫上忙。
你打電話的ExecuteScalar兩次! –
我是嗎?我雖然ExecuteScalar.ToString只會使用結果? – Dan