Access 轉 SQLite 注意事項

2021-07-22 20:59:00 字數 1377 閱讀 5853

最近將乙個程式從access修改為sqlite,需要調整的地方整理如下。

access 中可以直接使用數字開頭的表名稱, sqlite中不可以直接使用,表名要加雙引號,例如 select *from "1table" (1table前後要加雙引號, access中不用加雙引號)。

sqlite中沒有 now 函式,要用 datetime() 代替。

access 使用sql語句中使用 in [ms access; database=***.mdb]來訪問外部資料庫,sqlite中要用 attach database **.sdb as dbname語句先關聯資料庫,然後用 dbname.直接操作外部資料庫,最後用 detach database dbname 取消附加資料庫。

access建立表,自動增加欄位是 create table tablename (id identity(1,1) primary key), sqlite中要用 create table tablename (id integer primary key autoincrement)。

access 中的 select top 1 * from tablename, 在sqlite中要用 select * from limit 1

sqlite的sql語句中沒有 iff 函式,要使用 case when then end代替。

sqlite的sql語句中沒有switch 語句,要使用 case when then end代替。

access中可以修改表的型別,字段長度,sqlite中不可以,要修改需要建立乙個臨時表(字段型別、長度任意修改),將資料匯入的臨時表中,刪除原來的表,將臨時表改名。

sqlite沒有 isnull函式,用coalesce變通使用。

access 壓縮資料庫要用 cojetengine.compactdatabase(需要安裝元件),sqlite只需要執行 vacuum 命令即可。

access 查詢表是否存在的方法 select * from mysysobjects where type =1 and name=「表名」,而且需要在mysysobjects開通讀取許可權(預設是不開通的),sqlite使用 select * from sqlite_master where type ="表名"

獲得最新插入資料的id,access中使用 select @@identity,sqlite中使用 select last_insert_rowid()。

access中的隨機函式是 rnd(), sqlite中隨機函式是 random()。

access中的in字句是大小寫不敏感,sqlite中是大小寫敏感的,需要用函式轉化一下,select * from lower(user)in('user1', 'user2');

應該是還有不少不同的地方,我只是遇到了這些不同,以及相應的解決方法。

access 如果刪除相同行 轉 sqlite也可

不好意思,之前回答有些筆誤。這麼大的資料量,實現樓主這個目的我看可以分步予以實現 a.如果原始表不含唯一標識字段 第一步 取出原始表 假設表名為 a 中無重複的記錄行,到乙個新錶中取名 newa 執行sql生成表查詢 select distinct into newa from a 即可將原始無重複...

Access轉SqlServer的注意事項

1 自動增加字段需要重寫。在access中經常使用的自動編號字段,匯入到mssql後,他並不是自增型的int,需要手工設定,把匯入後的自動編號欄位的標識的 否 改為 是vajpuymhiw 種子 和 遞增量 都為 1 才能成為自動編號。2 所有的預設值都丟失了。主要是數字型別和日期型別 3 所有no...

Access轉Sql Server問題 例項說明

今天幫同學改乙個老的系統作為畢業設計,這系統技術絕對落後asp access。為了應付老師的驗收,然後這同學程式設計又不是很好,而其到了最後時刻才想到開始做畢設,於是找到了我。我看了他不知從 搞來的 跑了下,還行能跑,過兩天就要驗收程式了,把asp改成 asp.net是沒時間了,於是我提議改下資料庫...