gpt4 book ai didi

c# - 当我从 'int' 类型的 sqlite 列中选择时,我可以转换为 .net int 但是当我从 'integer' 列中选择时,我不能

转载 作者:太空狗 更新时间:2023-10-29 20:06:04 25 4
gpt4 key购买 nike

我正在使用 System.Data.SQLite,从一个列类型为“整数”的 sqlite 数据库表中进行选择,当我执行以下操作时:

int x = (int)reader["myColumn"];

它失败了。问题不在于该值为空;该列不可为空。如果我将列的数据类型更改为“int”,则它可以正常工作。列中的值为'2'、'3'、'4'等;没什么大不了的。

有人知道这是否是预期的行为吗?

最佳答案

正如其他回答者提到的,SQLite 整数存储在 1、2、3、4、6 或 8 个字节中。但是,您不会遇到溢出或超出范围的异常。

在这种情况下,(int) 是一个转换,而不是一个转换。如果 reader[] 没有返回一个整数类型的对象,如果它返回一个不同的数字类型,你将得到一个转换异常,不管它包含什么值。

根据 SQLite 整数的有效值范围,我猜它返回的值是一个 64 位整数,long。要验证,试试这个:

object x = reader["myColumn"];
Debug.WriteLine(x.GetType().Name);

关于c# - 当我从 'int' 类型的 sqlite 列中选择时,我可以转换为 .net int 但是当我从 'integer' 列中选择时,我不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4925084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com