Ele*_*ent 6 c# time timespan data-access daab
我正在使用带有DAAB 4.0框架的c#从一个MS SQL 2008数据库中读取一个结果,该数据库的列类型为dbtype.time,来自datareader.
我的问题是MSDN文档说dbtype.time应该映射到一个时间跨度但是我看到的唯一接近时间跨度的接近构造函数接受一个long,并且从datareader返回的结果不能转换为long,或者直接转换为时间跨度.
我发现这篇文章显示了datareader.getTimeSpan()方法,但daab 4.0中的datareader似乎没有这个方法.
那么如何将结果从datareader转换为timepan对象?
BFr*_*ree 10
你试过像这样的直接演员吗?
TimeSpan span = (TimeSpan)reader["timeField"];
Run Code Online (Sandbox Code Playgroud)
我刚刚在我的机器上测试了这个并且当"timeField"是数据库中的Time数据类型(SQL)时工作正常.
GetTimeSpan是OleDbDataReader和SqlDataReader(但不是DAAB ExecuteReader返回的更通用的IDataReader接口的方法).我假设IDataReaderDAAB返回给你的实例实际上是一个实例SqlDataReader.这允许您GetTimeSpan通过IDataReader适当地转换实例来访问该方法:
using (IDataReader dr = db.ExecuteReader(command))
{
/* ... your code ... */
if (dr is SqlDataReader)
{
TimeSpan myTimeSpan = ((SqlDataReader)dr).GetTimeSpan(columnIndex)
}
else
{
throw new Exception("The DataReader is not a SqlDataReader")
}
/* ... your code ... */
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果IDataReader实例不是a,SqlDataReader则可能缺少providerapp.config(或web.config)中定义的连接字符串的属性.
| 归档时间: |
|
| 查看次数: |
13926 次 |
| 最近记录: |