【发布时间】:2013-11-02 09:29:15
【问题描述】:
根据http://msdn.microsoft.com/en-us/library/office/aa211091(v=office.11).aspx,MS Jet 数据库引擎没有“NUMBER”数据类型;然而,这就是我在我正在查询的表的 MS Access 设计视图中看到的 -
我通过查询检索到的第一列的数据类型是“NUMBER”数据类型。
当我尝试将该值转换为 Int32 和 Double 时,这段代码都会中断:
// A set comprised of two columns are returned from a query in cmd
using (OleDbDataReader oleDbD8aReader = cmd.ExecuteReader())
{
while (oleDbD8aReader != null && oleDbD8aReader.Read())
{
//var accountID = oleDbD8aReader.GetString(0); // <-- this fails (it's a number, not a string)
//var accountID = oleDbD8aReader.GetInt32(0); // <-- this also fails!
var accountID = oleDbD8aReader.GetDouble(0); // <-- as does this!
var deptName = oleDbD8aReader.GetString(1);
. . .
}
}
为什么无法转换为字符串、int 或 double?我应该把它转换成什么?
【问题讨论】:
-
您是否尝试过查看
oleDbD8aReader["fieldname"].GetType()以查看其中是否包含有关返回内容的任何线索? -
正如老猫在《永不哭泣的狼》中所说的,“好主意!”它说 Int16。
标签: ms-access sqldatatypes type-conversion jet oledbdatareader