我想在VB.Net上执行一个方法来返回存储过程中的日期。我尝试使用ExecuteScalar,但它没有工作,它重新出现错误
'不允许从数据类型datetime到int的隐式转换。使用CONVERT函数运行此查询“
请帮助任何帮助吗?
谢谢
下面是代码
Public Function GetHolidaydate(ByVal struserID as String) As DateTime
Dim objArgs1 As New clsSQLStoredProcedureParams
objArgs1.Add("@userID", Me.Tag)
objArgs1.Add("@Date", 0, 0, ParameterDirection.Output)
Return (CDate(ExecuteScalar(clsLibrary.MyStoredProcedure.GetHolidayDate, objArgs1)))
End Function
答案 0 :(得分:0)
我认为你的问题就在这里:
objArgs1.Add("@Date", 0, 0, ParameterDirection.Output)
你正在添加0,它们应该是typeOf DateTime。
修改强>
Public Function GetHolidayDate(ByVal struserID as String) AS DateTime
Dim con As New SqlConnection(yourSQLConnectionString)
Dim cmd As New SqlCommand
Dim date As DateTime
con.Open()
cmd.Connection = con
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "yourStoredProcedureName"
cmd.Parameters.Add("@userID", Me.Tag)
cmd.Parameters("@Date").Direction = ParameterDirection.Output
cmd.ExecuteScalar()
date = cmd.Parameters("@Date").Value
con.Close()
Return date
End Function
答案 1 :(得分:0)
看起来你得到的错误是SQL错误而不是VB.Net错误。您是否尝试将某个日期时间转换为某个int?
您可以尝试运行ExecuteNonQuery()
方法来查看是否收到相同的错误。
您还可以运行SQLProfiler并查看正在运行的SQL。 然后,您可以尝试运行此SQL是SQL Server Management Studio
答案 2 :(得分:0)
你添加了两个参数 - 但是你说它应该返回后一个参数?
所以一定是
date DateTime = cmd.ExecuteScalar()
REM date = cmd.Parameters("@Date").Value
con.Close()