檔案資料庫
檔案資料庫又叫嵌入式資料庫,將整個資料庫的內容儲存在單個索引檔案中,以便於資料庫的發布。
檔案資料庫的
3
個重要特徵(相對於傳統資料庫)
1.
資料操作介面
sql92
標準,不管是傳統資料庫,還是檔案資料庫,都必須支援
sql92
標準。
2.
資料儲存格式
傳統資料庫(
db2, oracle, sql server
等)資料儲存的方式各異。
檔案資料庫將資料儲存在單一檔案
中。
3.api
支援傳統資料庫都支援
odbc
和jdbc
。某些檔案資料庫不支援
odbc
和jdbc
(sqlite
都不支援,
berkeley db
有odbc
和jdbc
支援,firdbird
有第三方的
odbc
驅動)。
檔案資料庫與傳統資料庫的比較
優勢:
由於資料儲存在單一檔案中,資料庫的部署和發布都比較簡單,適用於內嵌在應用程式中。
資料量不是太大時,速度比傳統資料庫要快。
缺點:由於資料儲存在單一檔案中,資料庫開啟時,該檔案會被整個
load
到記憶體,應此資料庫不能過大(
100m
以內,個人測試)。
各種檔案資料庫的比較
sqlite:
老牌的檔案資料庫,完全免費
( 250k,c
**)。支援事務機制和
blob
資料型別。
berkerley db:
更老牌的檔案資料庫,最穩定的資料庫,完全可以取代大部分傳統
client/server
資料庫的應用場合;支援
xml(代價是
30m硬碟空間)。缺點是配置和使用比較複雜,不太適合小專案。
firbird
:與sqlite
比較類似,有
c#支援。某些發布版本不能
build,
很久沒有關注了。
access
:一般不考慮
sqlite
簡單介紹
個人比較喜歡
sqlite,
250k
的源;而且作者很熱心,有問必答。
以下演示一下使用
sqlite
的步驟,先建立乙個資料庫,然後查詢其中的內容。
2個重要結構體和
5個主要函式:
sqlite3 *pdb,
資料庫控制代碼,跟檔案控制代碼
file
很類似sqlite3_stmt *stmt,
這個相當於
odbc
的command
物件,用於儲存編譯好的
sql語句
sqlite3_open(),
開啟資料庫
sqlite3_exec(),
執行非查詢的
sql語句
sqlite3_prepare(),
準備sql
語句,執行
select
語句或者要使用
parameter bind
時,用這個函式(封裝了
sqlite3_exec).
sqlite3_step(),
在呼叫sqlite3_prepare
後,使用這個函式在記錄集中移動。
sqlite3_close(),
關閉資料庫檔案
還有一系列的函式,用於從記錄集欄位中獲取資料,如
sqlite3_column_text(),
取text
型別的資料。
sqlite3_column_blob
(),取
blob
型別的資料
sqlite3_column_int(),
取int
型別的資料
…例項**如下
,
附件工程可直接編譯,例子使用了
blob
資料型別。
#include "sqlite3.h" //
包含乙個標頭檔案就可以使用所以
sqlite
的介面了
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#pragma comment(lib, "sqlite.lib") //
我把sqlite
編譯成了乙個靜態的
lib檔案。
void createdb();
void querydb();
int main()
void createdb()
void querydb()
}索引:
傳統資料庫:
client/server
構架的資料庫
dbf檔案資料匯入資料庫
在設計介面用fileupload伺服器控制項 後台 public int exportdbf sourcetype dbf sourcedb serverpath exclusive no null no collate machine backgroundfetch no deleted no c...
sql檔案資料匯入資料庫
1.建立createsql.sql檔案,內容 drop table if exists t user create table t user user id int 11 not null auto increment,user name char 30 not null,user password...
MySQL sql檔案 資料庫指令碼檔案
sql是sql的指令碼檔案,通常用來批量執行sql語句,一鍵式生成資料庫表。建立sql檔案,進行編寫 vim db.sql 建表建庫檔案都寫入其中 create dadabase if not exists order system2 use order system2 create table i...