正在物色node上面的輕量級嵌入式數據庫,作為嵌入式數據庫的代表,sqlite無疑是個理想的選擇方案。npm上集成sqlite的庫主要有兩個——sqlite3和realm。
realm是一個理想的選擇方案,它最初是為移動app設計的,在node也可以運行的,但是不支持Windows系統。sqlite3是一個專為nodejs設計的,在nodejs上面生態更健壯,因此最終選擇sqlite3。
sqlite3幾乎支持所有版本的nodejs,同時也可以和nwjs集成。
安裝
基于npm安裝
npm install sqlite3
這樣除了安裝完sqlite3的npm包,最主要的是也裝完了sqlite數據庫,因為sqlite是嵌入式數據庫,嵌入到客戶端中。sqlite3使用node-pre-gyp為各個平臺下載指定的預編譯的二進制文件。如果無法下載到預編譯的二進制文件,sqlite3將使用node-gyp和源代碼來構建擴展。
這個過程出現兩個的庫——node-pre-gyp和node-gyp。他們究竟是什么呢?
node-gyp是一個跨平臺的命令行工具,用于編譯C++編寫的nodejs擴展,首先gyp是為Chromium項目創建的項目生成工具,可以從平臺無關的配置生成平臺相關的Visual Studio、Xcode、Makefile的項目文件,node-gyp就是將其集成到nodejs中。因為linux的二進制分發快平臺做的并不好,所有npm為了方便干脆就直接源碼分發,用戶裝的時候再現場編譯。不過對有些項目二進制分發就比源碼分發簡單多了,所以還有個node-pre-gyp來直接二進制擴展的分發。
兩者區別在于node-gyp是發布擴展的源碼,然后安裝時候編譯;node-pre-gyp是直接發布編譯后的二級制形式的擴展。
和sqlite3一樣的需要基于node-gyp安裝的npm模塊也有很多,比如node-sass等,都是發布源代碼,然后編譯安裝。
基礎api
sqlite3的api都是基于函數回調的,因為nodejs中沒有像java的jdbc那種官方的數據庫客戶端接口,因此每個數據庫的api都不一樣,這里簡單介紹幾個sqlite3重要的api。
新建并打開數據庫
new sqlite3.Database(filename, [mode], [callback])
該方法返回一個自動打開的數據庫對象,參數:
filename:有效值是一個文件名,如:“mydatebase.db”,數據庫打開之后會創建一個“mydatebase.db”的文件用于保存數據。如果文件名是“:memory:”,表示是一個內存數據庫(類似h2那種),數據不會持久化保存,當關閉數據庫時,內容將丟失。
mode(可選):數據庫的模式,共3種值:sqlite3.OPEN_READONLY(只讀),sqlite3.OPEN_READWRITE(可讀寫)和sqlite3.OPEN_CREATE(可以創建)。 默認值為OPEN_READWRITE |OPEN_CREATE。
callback(可選):則當數據庫成功打開或發生錯誤時,將調用此函數。 第一個參數是一個錯誤對象,當它為空時,表示打開成功。
新聞熱點
疑難解答
圖片精選