SQLite 中文指南之FAQ第1/6页
短视频,自媒体,达人种草一站处事 sqllite行使进程中遇到的一些题目办理,中文版 1. 怎样建设自增字段? 2. SQLite 支持哪些数据范例? 3. 为什么能向 SQLite 数据库的整型字段中插入字符串? 4. 为什么 SQLite 以为表达式 '0'=='00' 为真? 5. 为什么 SQLite 不应承在统一张内外行使 '0' 和 '0.0' 作为两个差异的行的主键? 6. 为什么不能在 Linux box 中读取在 SparcStation 中建设的 SQLite 数据库? 7. 多个应用措施可能统一个应用措施的多个例程能同时存取统一个数据库文件吗? 8. SQLite是线程安详的吗? 9. 怎样列出一个 SQLite 数据库中的全部的表/索引? 10. SQLite数据库是否有已知的巨细限定? 11. 在 SQLite 中 VARCHAR 的最大长度是几多? 12. SQLite 是否支持 BLOB 范例? 13. 怎样从一个已存在的 SQLite 数据表中添加/删除字段? 14. 我删除了很大都据可是数据库文件并没有减小,是不是 Bug? 15. 是否能将 SQLite 用于贸易用途而不消交版权用度? 16. 我怎样行使含有单引号(')的字符串? 17. SQLITE_SCHEMA 错误代表什么? 18. 为什么ROUND(9.95,1) 返回 9.9 而不是 10.0? 莫非9.95 不应向长进位么? (1) 怎样建设自增字段? 简朴的答复:一个声明为 INTEGER PRIMARY KEY 的字段将自动增进。 这里是具体的谜底: 从 SQLite 的 2.3.4 版本开始,假如你将一个表中的一个字段声明为 INTEGER PRIMARY KEY,那么无论你何时向该表的该字段插入一个 NULL 值,这个 NULL 值将自动被改换为比表中该字段全部行的最大值大 1 的整数;假如表为空,那么将被改换为 1。好比,假设你有这样的一张数据表: CREATE TABLE t1( a INTEGER PRIMARY KEY, b INTEGER ); 在这张数据内外,声明 INSERT INTO t1 valueS(NULL,123); 在逻辑意义上等价于: INSERT INTO t1 valueS((SELECT max(a) FROM t1)+1,123); 一个新的API函数 sqlite3_last_insert_rowid() 返回最近的插入操纵的整形键 留意这个整型键始终比之前插入表中的最后一个键大1。新键相对付表中的已有键来说是独一的, 但它也许与之前从表中删除的键值重叠。要始终获得在整个表中独一的键,在INTEGER PRIMARY KEY的声明之前加要害词AUTOINCREMENT.这样被选的键将老是比表中已存在的最大键大1。若也许的 最大键已存在于表中,INSERT操纵将失败并返回一个SQLITE_FULL错误码. (2) SQLite 支持哪些数据范例? 拜见 (3) 为什么能向 SQLite 数据库的整型字段中插入字符串? 这是一个成果,不是一个 bug。你可以在任何字段中放任何信息,而不消管字段声明为什么范例。 你可以往整型字段中插入恣意长度的字符串,可能往布尔字段中插入浮点数,可能往字符字段中 插入日期。在 CREATE TABLE 呼吁中你指定给这个字段的数据范例不会限定插入这个字段的数据。 全部的字段可以插入恣意长度的字符串。但对付 INTEGER PRIMARY KEY 字段破例。这种字段只能 存放一个64位的整数,不然会堕落。 但SQLite会默认你但愿行使声明的字段范例。以是,好比你但愿在一个声明为INTEGER的字段 中插入一个字符串,SQLite会试图将其转换为一个整数。假如转换乐成,那么整数将被插入,否 则插入字符串,这种特征偶然被称作type or column affinity. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |