【发布时间】:2013-12-18 20:18:21
【问题描述】:
我正在尝试使用ExecuteScalar 来返回uniqueidentifier。但是,当我尝试运行它时,出现此错误:
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 只会使用结果?