SQLite ADO .NET和ExecuteScalar()
在SQLite ADO .Net(sqlite.phxsoftware.com)中,Execute
Scalar()查询方法的文档读取:“执行命令并返回结果集第一行的第一列(如果存在),如果没有返回结果集,则返回null. ”.我创建了一个表:
create table users ( id integer primary key,name text ) 并使用ExecuteScalar()执行队列: select ( id ) from users where name = @name 但是,非常奇怪 – 我不能把返回值转换为’int’,只能’long’!为什么这样,’id’字段在数据库中被定义为’integer’,而不是’bigint’? 解决方法这是因为SQLite“INTEGER PRIMARY KEYS”实际上不是整数,而是long(64位整数).从 documentation:
这是SQLite dynamic typing mechanism的副作用. 在实践中,要回答您的问题,您应该检索该值,并尽可能使用它,如果可能的话,仅使用转换运算符或转换类(如果值适合32位).因为它恰好是一个id,所以您不需要将其转换或转换为32位整数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |