sqlite3數據庫從sqlite系統命令,sqlite3 的使用,sqlite3 API 函數接口等這些方面來詳細了解sqlite3數據庫
安裝數據庫:sudo apt-get install sqlite3
創建數據庫:sqlite3 stu.db必須實現指定數據庫名
【1】sqlite系統命令
系統命令以 "."開頭普通命令,以";"結束
.schema 查看表的結構
.quit 退出數據庫(ctrl + \ 強制退出)
.exit 退出數據庫
.help 查看幫助信息
.databases 查看數據庫
.table 顯示數據庫中所有的表的表名
【2】sqlite3 的使用
1)創建一張表create table 表名(字段名稱1 字段類型,字段名稱2 字段類型, ....);
create table stu(id int, name char[20], sex char , score int);
2)向表中插入一條記insert into 表名 values (字段值1,字段值2,...);
錄insert into stu values(1001, 'zhangsan', 'm', 89);
insert into stu (id, name, sex,score) values(1002, 'lisi', 'm', 99);
select * from stu;// 查找所有的記錄
select * from stu where id=1001;// 查找符號條件的記錄
3)查詢記錄select * from stu where name= 'zhangsan';
// 字符串需要加引號(單雙皆可,功能相同)
select * from stu where name = 'zhangsan' or score=92;
4)刪除記錄delete from stu where id=1004;
5)更新記錄update stu set score=98 where id=1003;
6)刪除一張表drop table stu;
7)添加一列 alter table stu add column score int;
sqlite3 不允許直接刪除一列
①先創建一張新表
create table stu1 as select id , name from stu;
8)刪除一列 ②刪除原來的舊表
drop table stu;
③對新表重命名
alter table stu1 rename to stu;
9)數據庫主鍵 (既設置的數據將會是唯一存在的)
create table usr(name text primary key , passwd text);
【3】sqlite3 API 函數接口
gcc 編譯時應該連接 sqlite3 庫(靜態庫)
gcc *.c -o *** -lsqlite3
所需頭文件 #include
int sqlite3_open(
函數原型 const char *filename,/* Database filename (UTF-8) */
sqlite3 **ppDb/* OUT: SQLite db handle */
);
功能 創建或者打開一個數據庫
filename 數據庫名字
參數
ppdb 操作數據庫的指針,句柄。
成功 SQLITE_OK
返回值
失敗 error_code
例 sqlite3 *db;
if(sqlite3_open("stu.db", &db) != SQLITE_OK)
{
printf("%s\n", sqlite3_errmsg(db));
}
所需頭文件 #include
int sqlite3_exec(
sqlite3* db,/* An open database */
const char *sql,/* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
函數原型 void * arg,/* 1st argument to
callback */
char **errmsg/* Error msg written here
*/
);
功能執行一條sql語句
參數db 數據庫的句柄指針
sql 將要被執行sql語句
callback 回調函數, 只有在查詢語句時,才給回調函數傳參
int (*callback)(void* arg ,int ncolumn ,char** f_value,char**
f_name)
功能:得到查詢結果
參數:arg 為回調函數傳遞參數使用的
ncolumn 記錄中包含的字段的數目
f_value包含每個字段值的指針數組
f_name包含每個字段名稱的指針數組
返回值:成功 0,出錯非0
arg 為callback 傳參的
errmsg 錯誤信息的地址
成功 SQLITE_OK
返回值
失敗 error_code
char *errmsg;
if(sqlite3_exec(db, "create table stu(id int, name char, score int)",
例子NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("%s\n", errmsg);
}
所需頭文件 #include
int sqlite3_get_table(
sqlite3 *db,/* An open database */
const char *zSql,/* SQL to be evaluated */
函數原型char ***pazResult, /* Results of the query */
int *pnRow,/* Number of result rows written here */
int *pnColumn,/* Number of result columns written here */
char **pzErrmsg/* Error msg written here */
);
功能查詢數據庫,它會創建一個新的內存區域來存放查詢的結果信息
db 數據庫操作句柄
sql 數據庫的sql語句
azResult 查詢的結果
行數,nrow的值為查詢到的符合條件的記錄數(不包括字段名)。
參數 注意:nrow的值不包括字段名,如果打印時用for (i = 0; i < nrow;
nRowi++)會打印出字段名,但是會少打印出一條符合條件的記錄。因此打
印時要用 for (i = 0; i
印出來。
nColumn列數,ncolumn的值為查詢到的符合條件的字段數。
errmsg錯誤消息
成功SQLITE_OK
返回值
失敗error_code
const char *sqlite3_errmsg(sqlite3* db);功能:獲取錯誤信息描述
int sqlite3_close(sqlite3* db);功能:關閉一個數據庫
void sqlite3_free_table(char **result);功能:釋放內存
推薦書籍:
UNIX高級環境編程
UNIX網絡編程 卷一 卷二
TCP/IP詳解 卷一 卷二 卷三
UNIX/LINUX系統編程手冊 上冊 下冊