Ror*_*ory 7 c# system.data.sqlite
我正在使用System.Data.SQLite,从一个sqlite数据库表中选择一个列的类型为'integer',当我做这样的事情时:
int x = (int)reader["myColumn"];
Run Code Online (Sandbox Code Playgroud)
它失败.问题不在于该值为空; 该列不可为空.如果我将列的数据类型更改为"int",那么它可以正常工作.列中的值为"2","3","4"等; 没什么大不了的.
任何人都知道这是否是预期的行为?
Dav*_*Yaw 10
正如另一个回答者所提到的,SQLite整数存储在1,2,3,4,6或8个字节中.但是,您不会出现溢出或超出范围的异常.
在这种情况下,(int)是演员,而不是转换.如果reader[]没有返回integer类型的对象,如果它返回不同的数字类型,则无论其包含的值如何,都将获得强制转换异常.
根据SQLite整数的有效值范围,我猜它是将值返回为64位整数,long.要验证,请尝试以下操作:
object x = reader["myColumn"];
Debug.WriteLine(x.GetType().Name);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10180 次 |
| 最近记录: |