如何将 DbType.Time 的 Datareader 结果转换为 Timespan 对象?
我正在使用带有 DAAB 4.0 框架的 C# 从数据读取器中读取列类型为 dbtype.time 的 MS SQL 2008 数据库的结果。
我的问题是 MSDN 文档说 dbtype.time 应该映射到时间跨度,但我看到的时间跨度的唯一关闭构造函数接受 long,并且从 datareader 返回的结果不能转换为 long 或直接转换为时间跨度。
我发现这篇文章显示了datareader.getTimeSpan()方法,但是daab 4.0中的datareader似乎没有这个方法。
那么如何将数据读取器的结果转换为时间跨度对象?
I am reading a result from a MS SQL 2008 Database with a column type of dbtype.time from a datareader, using c# with DAAB 4.0 framework.
My problem is the MSDN docs say dbtype.time should map to a timespan but the only close constructor for timespan I see accepts a long, and the result returned from the datareader cannot be cast to a long, or directly to a timespan.
I found this Article whichs shows datareader.getTimeSpan() method, but the datareader in daab 4.0 does not seem to have this method.
So how do I convert the result from the datareader to a timespan object ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你尝试过这样的直接演员吗?
我刚刚在我的机器上快速测试了这一点,并且当“timeField”是数据库(SQL)中的时间数据类型时工作正常。
Have you tried a direct cast like this?
I just tested this quickly on my machine and works fine when "timeField" is a Time datatype in the database (SQL).
GetTimeSpan
是OleDbDataReader
和SqlDataReader
的方法(但不是 DAAB 的ExecuteReader
返回的更通用的 IDataReader 接口的方法) 。 我假设 DAAB 返回给您的IDataReader
实例实际上是SqlDataReader
的实例。 这允许您通过适当地转换IDataReader
实例来访问GetTimeSpan
方法:编辑:如果
IDataReader
实例不是SqlDataReader< /code> 那么您可能会缺少 app.config(或 web.config)中定义的连接字符串的
provider
属性。GetTimeSpan
is a method ofOleDbDataReader
andSqlDataReader
(but not of the more generic IDataReader interface which DAAB'sExecuteReader
returns). I'm assuming that theIDataReader
instance which DAAB has returned to you is actually an instance ofSqlDataReader
. This allows you to access theGetTimeSpan
method by casting theIDataReader
instance appropiately:Edit: If the
IDataReader
instance is not aSqlDataReader
then you might be missing theprovider
attribute of your connection string defined in your app.config (or web.config).这是我的看法:
也许更干净!
Here's my take:
Cleaner, perhaps!
列值的 .NET 类型是什么? 如果它是 DateTime,那么您可以将其 Ticks 属性(长整型)的值传递给 TimeSpan 构造函数。 例如
What is the .NET type of the column value? If it is a DateTime then you can pass the value of its Ticks property (long) to the TimeSpan constructor. E.g.