sqlite3數(shù)據(jù)庫歸納
sqlite3數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫,體積小,支持ACID事物。
(ACID,指數(shù)據(jù)庫事務(wù)正確執(zhí)行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個支持事務(wù)(Transaction)的數(shù)據(jù)庫系統(tǒng),必需要具有這四種特性,否則在事務(wù)過程(Transaction processing)當(dāng)中無法保證數(shù)據(jù)的正確性,交易過程極可能達(dá)不到交易方的要求。)
/********************************************/
sqlite是一個輕量級的嵌入式數(shù)據(jù)庫。
特征:
1.零配置,無需安裝和管理配置;
2.儲存在單一磁盤文件中的一個完整的數(shù)據(jù)庫;
3.數(shù)據(jù)庫文件可以在不同字節(jié)順序的機器間自由共享;
4.支持?jǐn)?shù)據(jù)庫大小至2TB;
5.足夠小,全部源代碼大致3萬行c代碼,250KB;
6.比以前流行的大多數(shù)數(shù)據(jù)庫對數(shù)據(jù)的操作要快;
/*******************************************/
SQLite數(shù)據(jù)庫采用模塊化設(shè)計,由8個獨立的模塊構(gòu)成,這些獨立模塊又構(gòu)成了三個主要的子系統(tǒng),模塊將復(fù)雜的查詢過程分解為細(xì)小的工作進(jìn)行處理。
/*******************************************/
手工建數(shù)據(jù)庫:
linux@ubuntu:~$ sqlite3 my.db
查看幫助:
sqlite> .help
文件存放位置:
sqlite> .database
退出:
sqlite> .quit
查看表:
sqlite> .tables
顯示表的結(jié)構(gòu):
sqlite> .schema
1.建表:
sqlite> create table usr(id integer primary key, name text,age integer null, gender text, salary real not null);
2.刪除表
sqlite> drop table usr;
3.增:
sqlite> insert into usr(id, name, age, salary) values(2, 'liu', 20, 6000);
4.刪
sqlite> delete from usr where id = 2;
5.改:
sqlite> update usr set gender = 'man' where id = 3;
6.查:
sqlite> select * from usr where id = 2;
7.在表中添加字段
sqlite>alter table usr add column country text;
/******************************************/
代碼創(chuàng)建
sqlite編程接口
1.打開sqlite數(shù)據(jù)庫
int sqlite3_open(char *path, sqlite3 **db);
path: 數(shù)據(jù)庫文件的路徑
db: 指向sqlite句柄的指針
返回值: 成功返回0,失敗返回錯誤碼(非零值)
2.關(guān)閉sqlite數(shù)據(jù)庫
int sqlite3_close(sqlite3 *db);
返回值: 成功返回0,失敗返回錯誤碼
3.
const char *sqlite3_errmsg(sqlite3 *db);
返回值: 返回錯誤信息
程序的編譯方法:
gcc -o test test.c -lsqlite3
4.執(zhí)行SQL操作
typedef int (*sqlite3_callback)(void *, int, char **, char **); int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback, void *, char **errmsg); db: 函數(shù)庫句柄 sql: SQL語句 callback:回調(diào)函數(shù) errmsg: 錯誤信息指針的地址 |
返回值: 成功返回0,失敗返回錯誤碼
5.每次找到一條記錄自動執(zhí)行一次回調(diào)函數(shù)
typedef int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name); para: 傳遞回調(diào)函數(shù)的參數(shù) f_num: 記錄包含的字段數(shù)目 f_value: 包含每個字段值的指針數(shù)組 f_name: 包含每個字段名稱的指針數(shù)組 |
返回值: 成功返回0,失敗返回-1
6.不使用回調(diào)函數(shù)執(zhí)行SQL操作
int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int *nrow, int *ncolumn, char **errmsg);
db: 數(shù)據(jù)庫句柄
sql: SQL語句
resultp: 用來指向sql執(zhí)行結(jié)果的指針
nrow: 滿足條件的記錄的數(shù)目
ncolumn: 每條記錄包含的字段數(shù)目
errmsg: 錯誤信息指針的地址
返回值: 成功返回0,失敗返回錯誤碼
posted on 2014-01-22 10:15 順其自然EVO 閱讀(227) 評論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫