之前的連續五篇大致介紹了各種sqlite的原生函式原型,引數以及用途等,並對各個封裝的類做了詳細的介紹,最後一篇將展示一下怎麼使用封裝,使用封裝的時候需要注意的問題等。
假設已經存在乙個資料庫名為firsqlite.db;下面使用各種類來對其做各種常規訪問與操作。
最開始要定義乙個cppsqlite3db類物件 db;然後呼叫函式open(const char *)開啟乙個已經存在的資料庫,如果不存在就建立乙個新的資料庫。
非查詢類的sql語句呼叫舉例
1:根據一條sql語句建立乙個表。db.execdml("create table teacher (t_id int, t_age int, t_*** char);");
2:插入一條記錄。db.execdml("insert into teacher values(124, 30, 'm');");
3:更新一條記錄。db.execdml("update teacher set t_age = 11 where t_id = '123';");
4:刪除表,用的是drop,刪除整個物理儲存表。db.execdml("drop table teacher;");
以上操作是針對非查詢類的語句,雖然會返回受影響的行數,但一般沒用到。
獲取一整個表的內容,並具有針對性的獲取資料。
cppsqlite3table ct = db.gettable("select * from teacher order by 1");
int id, age;
char ****, *name;
for (int row = 0; row < ct.numofrows(); row++)
{ ct.setrow(row); //每次獲取資料前要顯式的指定行值
ct.getintfield(0, id);
ct.getintfield(1, age); //然後根據列索引(從0開始)以及資料型別獲取
ct.getstringfield(2, ***); //這裡使用的是向函式中傳遞乙個引用
ct.getstringfield(3, name);
cout<
根據查詢語句獲取乙個滿足條件的結果並管理。
cppsqlite3query cq = db.execquery("select * from teacher where t_*** = 'm';");
int id, age;
char ****, *name;
while (!cq.eof())
{ cq.getintvalue(0,id);
cq.getintvalue(1, age);
cq.getstrin**alue(2, ***);
cq.getstrin**alue(3, name);
cout<
最後使用完資料庫後要關閉了,db.close();
最後總結一下使用原生函式執行的流程所使用的函式都被封裝在了**。
sqlite3_open(const char *)在cppsqlite3db::open(const char *)函式中。
如果要執行cppsqlite3db::execdml(const char *)函式,則內部會直接呼叫乙個sqlite3_exec()函式直接作用在資料庫物件上,並返回受影響的行數。
如果要執行的cppsqlite3db::execquery(const char *)函式,內部先對乙個const char *的sql語句通過cppsqlite3db::compile(const char *)生成乙個sqlite3_stmt*物件,然後再執行查詢。
C 封裝SQLite例項《二》
這一篇部落格主要講如何使用sqlite有關庫函式去管理資料庫中的一張表。主要用到的函式 sqlite api int sqlite3 get table sqlite3 db,the database on which the sql executes const char zsql,the sql...
C語言封裝sqlite3 API
執行類似insert,update,create,drop這些不需要結果的sql語句。int executenoquery sqlite3 db,const char sql if sqlite3 step pstmt sqlite done if pstmt null sqlite3 finali...
sqlite 專案例項
private string url 單擊事件 private void button1 click object sender,eventargs e private datatable dtcatelog2 繫結資料來源 private datarow dtcatelog private dat...