Access 转 SQLite 注意事项

前端之家收集整理的这篇文章主要介绍了Access 转 SQLite 注意事项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近将一个程序从Access修改sqlite,需要调整的地方整理如下。

  1. Access 中可以直接使用数字开头的表名称sqlite中不可以直接使用,表名要加双引号,例如 select *from "1table" (1table前后要加双引号, Access中不用加双引号)。
  2. sqlite中没有 now 函数,要用 datetime() 代替。
  3. Access 使用sql语句中使用 in [MS Access; database=***.mdb]来访问外部数据库sqlite中要用 Attach database **.sdb as dbname语句先关联数据库,然后用 dbname.直接操作外部数据库,最后用 DETACH DATABASE dbname 取消附加数据库
  4. Access建立表,自动增加字段是 Create Table tablename (ID IdEntity(1,1) PRIMARY KEY), sqlite中要用 Create Table tablename (ID INTEGER PRIMARY KEY AUTOINCREMENT)。
  5. Access 中的 select top 1 * from tablename, 在sqlite中要用 select * from limit 1
  6. sqlite的sql语句中没有 iff 函数,要使用 case when then end代替。
  7. sqlite的sql语句中没有switch 语句,要使用 case when then end代替。
  8. Access中可以修改表的类型,字段长度,sqlite中不可以,要修改需要建立一个临时表(字段类型、长度任意修改),将数据导入的临时表中,删除原来的表,将临时表改名。
  9. sqlite没有 isnull函数,用coalesce变通使用。
  10. Access 压缩数据库要用 CojetEngine.CompactDatabase(需要安装组件),sqlite只需要执行 vacuum 命令即可。
  11. Access 查询表是否存在的方法 select * from MySysObjects where type =1 and name=“表名”,而且需要在MySysObjects开通读取权限(默认是不开通的),sqlite使用 select * from sqlite_master where type ="表名"
  12. 获得最新插入数据的ID,ACCESS中使用 select @@IDENTITY,sqlite中使用 select LAST_INSERT_ROWID()。
  13. Access中的随机函数是 rnd(),sqlite中随机函数是 random()。
  14. Access中的in字句是大小写不敏感,sqlite中是大小写敏感的,需要用函数转化一下,SELECT * FROM LOWER(User)in('user1','user2');
应该是还有不少不同的地方,我只是遇到了这些不同,以及相应的解决方法

猜你在找的Sqlite相关文章