1.插入的sql語句:insert or ignore into student (student_number,name,***) values (?,?,?)
2.插入操作**
/*************************
*資料庫插入資料 author:樂樂
*引數:要插入的資料
**************************/
#define insert_msg "insert or ignore into student (student_number,name,***) values (?,?,?)"
void
database_insert
(int number,
const
char
*name,
const
char
****)
//2.繫結資料 int型別
res =
sqlite3_bind_int
(stmt,
1, number);if
(res != sqlite_ok)
//2.繫結資料 字元型
//sqlite_static->傳遞給該字串的指標將有效,直到執行查詢為止
res =
sqlite3_bind_text
(stmt,
2, name,-1
, sqlite_static);if
(res != sqlite_ok)
res =
sqlite3_bind_text
(stmt,
3, ***,-1
, sqlite_static);if
(res != sqlite_ok)
//3.遍歷select執行的返回結果
res =
sqlite3_step
(stmt);if
(sqlite_done == res)
out_free:
//4.銷毀前面被sqlite3_prepare建立的準備語句
//【每個準備語句都必須使用這個函式去銷毀以防止記憶體洩露】
sqlite3_finalize
(stmt)
;out:
if(err <0)
}
3.完整執行**
/***************************************
**demon:建立資料庫 author:樂樂
****************************************/
#include
#include
#define db_path "./student.db"
//資料庫建立路徑
/***************************sql 語句定義 start**********************************/
#define create_table \
"create table if not exists student( " \
"student_number integer default 1," \
"name text default null," \
"*** text default null" \
");"
#define insert_msg "insert or ignore into student (student_number,name,***) values (?,?,?)"
/***************************sql 語句定義 end***********************************/
static sqlite3 *db;
//初始化表
void
init_tab
(sqlite3 *db)
//1.執行sql select語句
res =
sqlite3_prepare_v2
(db, create_table,-1
,&stmt,
null);
if(res != sqlite_ok)
//2.遍歷select執行的返回結果
res =
sqlite3_step
(stmt)
;//sqlite_done == res | sqlite3_step() has finished executing
if(sqlite_done == res)
out_err:
//3.銷毀前面被sqlite3_prepare建立的準備語句
//【每個準備語句都必須使用這個函式去銷毀以防止記憶體洩露】
sqlite3_finalize
(stmt);if
(err <0)
return;}
/*************************
*1.初始化資料庫
*引數:資料庫的路徑
*return 0成功
**************************/
intsqlite_init
(const
char
*path)
res =
sqlite3_initialize()
;//初始化,成功返回sqlite_ok
if(res != sqlite_ok)
//開啟資料庫,(存在開啟,不存在建立)成功返回1
res =
sqlite3_open
(path,
&db);if
(res)
//初始化表
init_tab
(db)
;return0;
}/*************************
*2.資料庫插入資料
*引數:要插入的資料
**************************/
void
database_insert
(int number,
const
char
*name,
const
char
****)
//2.繫結資料 int型別
res =
sqlite3_bind_int
(stmt,
1, number);if
(res != sqlite_ok)
//2.繫結資料 字元型
//sqlite_static->傳遞給該字串的指標將有效,直到執行查詢為止
res =
sqlite3_bind_text
(stmt,
2, name,-1
, sqlite_static);if
(res != sqlite_ok)
res =
sqlite3_bind_text
(stmt,
3, ***,-1
, sqlite_static);if
(res != sqlite_ok)
//3.遍歷select執行的返回結果
res =
sqlite3_step
(stmt);if
(sqlite_done == res)
out_free:
//4.銷毀前面被sqlite3_prepare建立的準備語句
//【每個準備語句都必須使用這個函式去銷毀以防止記憶體洩露】
sqlite3_finalize
(stmt)
;out:
if(err <0)
}int
main()
編譯
執行結果
Shell 插入Sqlite資料庫
由於專案需要,在shell中操作sqlite資料庫,簡單記錄下 services networkkpi 表結構之前已經建立好,所以,直接使用step1 拼接插入sql字串 table sql insert into services networkkpi name,category id,web o...
android中 sqlite資料庫插入速度的優化
前幾天遇到乙個問題,就是關於sqlite插入資料速度慢的問題。看了下sqlite的官方文件,預設情況下sqlite會為每乙個插入語句生成乙個transaction,在轉速為7200的的磁碟驅動器上,每秒鐘最多能完成60個左右的transaction。也就是說預設情況下每秒只能插入60條左右的資料,這...
Sqlite如果插入或更新資料庫
我們經常會用到如果資料庫存在則更新,如果不存在則新增 sql一般寫為 if exists select from table where tableid 1 insert into table else update table 但是sqlite裡沒有if exists這種寫法,它用的是一種更簡單的...