大家好,我是stackoverflow的朋友。
我在这里写问题,因为我有时无法检测到数据读取器中字段的读取返回一个无效的转换异常。我将提供尽可能多的信息来理解我的情况。我正在使用ASP.NET 3.5。
I have a Module that have a function that returns a IDataReader and receives a sql query. something like this
function get_dr(query as String) as IDataReader dim connection = new SqlClient.SqlConnection("connection string") connection.open() dim command = connection.createCommand command.commandText = query dim reader = command.executeReader(CommandBehavior.CloseConnection) return reader end function
I have a Class with a Shared function that recovers a new dataReader and returns a date. something like this:
public shared function getDate() as Date using dr = get_dr("SELECT dbo.getDate()") if dr.read() and dr(0) isnot dbnull.value then return dr.GetDateTime(0) end if end using end function
System.InvalidCastException: Specified cast is not valid.
at System.Data.SqlClient.SqlBuffer.get_DateTime()
at System.Data.SqlClient.SqlDataReader.GetDateTime(Int32 i)
有时候我会遇到这个错误,我认为这是因为很多用户与我的应用程序中的其他函数(这些函数最终也会使用 get_dr)一起调用此函数,将数据的数据读取器混合在另一个执行中,但我需要知道是否我做错了什么或者有更好的方法。
注意事项: - dbo.getDate 是一个始终返回日期的 SQL 函数。 - 不要担心糟糕的代码编写,这只是示例,但它们具有理解场景所必需的内容。 - 对于我的糟糕的英语,我感到抱歉。
非常感谢您的帮助。