SQLite檔案資料庫、記憶體資料庫建立及匯入匯出

來源:互聯網
上載者:User
文章目錄
  • 3.1 檔案資料庫、記憶體資料庫的建立
  • 3.3 檔案資料庫命令格式的匯入匯出
一、初識sqlite

         偶然的機會接觸到sqlite,不禁驚歎sqlite的體型小巧而功能強大(看來軟體也不可貌相哦),Sqlite 是開源的記憶體資料庫(也可以稱之為內嵌式資料庫),大量無私的程式員為sqlite發展貢獻了自己的力量。Sqlite 應用極廣,手機、mp3,機頂盒可能存在sqlite身影,Apple的Mac os,linux,或者windows在安裝第三方軟體時也可以應用sqlite。

         Sqlite技術優點:

1.  Sqlite輕量級、跨平台的關係型開源記憶體資料庫,使用sqlite只需帶上動態庫,就可使用sqlite全部功能(動態庫Windows下487KB,Linux下347KB);

2.   核心引擎不依賴第三方軟體,也不需要安裝;

3.   資料庫中所有的資訊(比如表、視圖、觸發器、等)都包含在一個檔案內。這個檔案可以copy到其它目錄或其它機器上,也照用不誤。如果使用記憶體方式,可以沒有該檔案;

4.   除了主流作業系統,SQLite還支援了很多冷門的作業系統。它對很多嵌入式系統(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)也支援;

5.   SQLite的API不區分當前操作的資料庫是在記憶體還是在檔案(對於儲存介質是透明的);

等等;

         缺點:

1.    並發訪問的鎖機制
SQLite在並發(包括多進程和多線程)讀寫方面的效能不太理想。資料庫可能會被寫操作獨佔,從而導致其它讀寫操作阻塞或出錯;

2.     SQL標準支援不全

如不支援外鍵約束;

          看來還是優點多於缺點!呵呵!

二、sqlite體系機構

               sqlite模組將 查詢過程分為幾個不連續的任務,在結構棧的頂部編譯查詢語句,中不執行,在底部處理作業系統的儲存和介面。

 

                                                            圖1-2SQLite的體繫結構

(註:結構圖轉載於《SQLite權威指南》)

三、sqlite檔案資料庫、記憶體資料庫建立及匯入匯出

           sqlite官網(www.sqlite.org)同時提供已編譯版本和來源程式。同時適用於Windows和linux。

           經過前面sqlite熱身之後,趕緊轉入正題,幹點正事!(*^__^*)

3.1 檔案資料庫、記憶體資料庫的建立3.1.1檔案資料庫的建立

Windows:

1)  下載sqlite最新版本sqlite3.exe;

2)  dos進入到執行程式目錄下;

3)  輸入 sqlite3  d:\test.db(如果後面執行路徑存在test.db 則開啟資料庫;如果執行路徑下不存在test.db則建立test.db);

Linux:

1)  下載sqlite最新版本sqlite3;

2)  Shell進入到可知性程式目錄下;

3) 輸入sqlite3  /home/test.db(如果後面執行路徑存在test.db 則開啟資料庫;如果執行路徑下不存在test.db則建立test.db);

至此則開啟或者建立一個檔案資料庫庫;

3.1.2 記憶體資料庫的建立
C程式碼範例:sqlite3 *db;rc = sqlite3_open(":memory:",&db);    // 記憶體中建立一個資料庫3.2 檔案資料庫、記憶體資料庫的匯入匯出C程式碼範例://////////////////////////////////////////////////////////////////////////////////////////////參數說明://pInMemory: 指向記憶體資料庫指標//zFilename: 指向檔案資料庫目錄的字串指標//isSave  0: 從檔案資料庫載入到記憶體資料庫 1:從記憶體Database Backup到檔案資料庫////////////////////////////////////////////////////////////////////////////////////////////int loadOrSaveDb(sqlite3 *pInMemeory, const char *zFilename, int isSave){         int rc;         sqlite3 *pFile;         sqlite3_backup *pBackup;         sqlite3 *pTo;         sqlite3 *pFrom;         rc = sqlite3_open(zFilename, &pFile);         if(rc == SQLITE_OK)         {                   pFrom = (isSave?pInMemeory:pFile);                   pTo = (isSave?pFile:pInMemeory);                   pBackup = sqlite3_backup_init(pTo,"main",pFrom,"main");                   if(pBackup)                   {                            (void)sqlite3_backup_step(pBackup,-1);                            (void)sqlite3_backup_finish(pBackup);                   }                   rc = sqlite3_errcode(pTo);         }         (void)sqlite3_close(pFile);         return rc;}

 調用執行個體:

int ret = 0;char *filename = “d:\\test.db”;sqlite3 *memoryDb;ret = sqlite3_open(“memory:”, &memoryDb);ret = loadOrSaveDb(memoryDb, filename, 0) //檔案資料庫匯入到記憶體資料庫
3.3 檔案資料庫命令格式的匯入匯出
         3.3.1 檔案資料庫命令格式資料匯出、備份

方法一:(sqlite資料庫內部)

Sqlite>.output d:\test.sql

Sqlite>.dump

Sqlite>.output stdout

方法二:(dos命令列)

sqlite3 525.db .dump>haha.sql

3.3.2檔案資料庫命令格式資料匯入

sqlite>.read  file.sql

             今天暫且到這了,to be continue……

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.