从sqlite列中选择,我可以转换为.netint但是当我从“整数”列中选择时我不能,当我做这样的事情时:intx=(int)reader["myColumn"];它失败。问题不在于该值为空;该列不可为空。如果我将列的数据类型更改为“int”,那么它就可以正常工作。列中的值为“2”、“3”、“4”等;没什么大不了。有人知道这是否是预期的行为吗?正如另一个回答者提到的,SQLite整数存储在1、2、3、4、6或8个字节中。但是,您不会遇到溢出或超出范围的异常。在这种情况下,(int)是一个演员,而不是一个转换。如果reader[]不返回整数类型的对象,如果它返回不同的数值类型,无论它包含什么值,您都会得到一个转换异常。根据SQLite整数的有效值范围,我猜它返回的值是64位整数long。要验证,试试这个:objectx=reader["myColumn"];Debug.WriteLine(x.GetType().Name);发生异常是因为datareader.Item[]返回对象。问题是由于装箱/拆箱。这与数据库本身无关...longa=1;整数b=2;对象objectA=a;对象对象B=b;Console.WriteLine((int)a);Console.WriteLine((long)b);Console.WriteLine((int)objectA);Console.WriteLine((long)objectB);控制台输出2,然后输出1,但是在objectA,objectB的objectA中抛出异常。这是.NET的一个特性,与ODBC驱动程序无关。SQLitehttp://www.sqlite.org/datatype3.html整数。该值是一个有符号整数,存储为1、2、3、4、6或8个字节,具体取决于值的大小。.NEThttp://msdn.microsoft.com/en-us/library/cs7y5x0x(VS.90).aspxint-2,147,483,648..2,147,483,647所以我预计“大”SQlite整数值会出现溢出或超出范围的错误.以上是C#学习教程:当我从类型为“int”的sqlite列中进行选择时,我可以转换为.netint但是当我从“整数”列中进行选择时,我无法共享整个内容,如果有帮助的话对大家有用,需要了解更多C#学习教程,希望大家多多关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
