【发布时间】:2017-12-23 21:44:14
【问题描述】:
我有一个古老的 Access97 数据库,其中包含我想在望远镜的指向软件中使用的天文数据。赤经的小时和分钟存储为 UnsignedTinyInt。
我假设 UnsignedTinyInt 是一个 unsigned short 或 ushort。如果我编写以下代码,其中“reader”是 OleDbDataReader,而 fld 是序数值。显然,Int16 是可用的最短整数。
select myValue from myTable;
ushort myValue;
myValue = reader.GetInt16(fld);
确切的例外是无效的演员表。 OleDbDataReader 中有许多 Get 方法可用,包括三个 GetInt。无论我如何声明 myValue,GetInt 都不起作用。
【问题讨论】:
-
I am assuming UnsignedTinyInt is an unsigned short这是不正确的。这是一个byte。 -
No GetInt works那是因为它们是为(2 个字节)short、(4 个字节)int和(8 个字节)long而设计的——而你所拥有的是(1字节)byte. -
以后您可以调用
object GetValue(int ordinal)并检查返回的对象 (myValue.GetType()) 以查看OleDbDataReader认为该字段是什么类型,或者GetSchemaTable。 -
还有this table可以咨询。
标签: c# ms-access-97