原文:http://club.tech.163.com/bbs/mobile_develop/185082109.html
上次讲到了SQLite的查询优化代码中的具体实现,现在来看一下它的几个实例:
- #include "stdio.h"
-
- #include "sqlite3.h"
- #include <windows.h>
-
- void query(sqlite3 *db,sqlite3_stmt *stmt,char * sql);
-
- int main(int argc, char **argv)
- {
- sqlite3 *db;
- char *zErr;
- int rc;
- char *sql;
- sqlite3_stmt *stmt=0;
- rc = sqlite3_open("memory.db", &db);
- if(rc) {
- fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
- sqlite3_close(db);
- }
-
- sql="CREATE TABLE t1 (num int,word TEXT NOT NULL)";
-
-
- rc = sqlite3_exec(db, sql, NULL, NULL, &zErr);
- if(rc != SQLITE_OK) {
- if (zErr != NULL) {
- fprintf(stderr, "SQL error: %s\n", zErr);
- sqlite3_free(zErr);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
- sql="create index t1nwindex on t1(num)";
- rc=sqlite3_exec(db, sql, NULL, NULL, &zErr);
- if(rc != SQLITE_OK) {
- if (zErr != NULL) {
- fprintf(stderr, "SQL error: %s\n", zErr);
- sqlite3_free(zErr);
- }
- }
-
-
-
-
- rc=sqlite3_exec(db, sql, NULL, NULL, &zErr);
- if(rc != SQLITE_OK) {
- if (zErr != NULL) {
- fprintf(stderr, "SQL error: %s\n", zErr);
- sqlite3_free(zErr);
- }
- }
-
- printf("查询结果是:\n");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- int start=GetTickCount();
- query(db,stmt,sql);
- printf("the time has pass:%dms\n",GetTickCount()-start);
- sqlite3_close(db);
- return 0;
- }
-
- void query(sqlite3 *db,sqlite3_stmt *stmt,char * sql){
- int rc,ncols,i;
- const char *tail;
- rc = sqlite3_prepare(db, sql, -1, &stmt, &tail);
- if(rc != SQLITE_OK) {
- fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db));
- }
- rc = sqlite3_step(stmt);
- ncols = sqlite3_column_count(stmt);
- while(rc == SQLITE_ROW) {
- for(i=0; i < ncols; i++) {
- fprintf(stderr, "'%s' ", sqlite3_column_text(stmt, i));
- }
- fprintf(stderr, "\n");
- rc = sqlite3_step(stmt);
- }
- }
(秩名) |