当前位置:数据库 > SQLite >>

Linux下sqlite数据库操作-<一> 表的检测,创建,删除。

<一> 表的检测,创建,删除。 
 
#include <stdio.h> 
#include <stdbool.h> 
#include <stdlib.h>  
#include <string.h> 
#include <sqlite3.h> 
 
bool db_tableExists(sqlite3 *db, const char *tbname) 

    int nRet; 
    const char   *szTail; 
    sqlite3_stmt *pvm; 
    char sql[1024]; 
    sprintf(sql, "select count(*) from sqlite_master where type='table' and name='%s'", tbname); 
 
    szTail=0; 
 
    nRet = sqlite3_prepare(db, sql, -1, &pvm, &szTail); 
 
    //printf("nRet=%d SQLITE_OK=%d SQLITE_DONE=%d SQLITE_ROW=%d \n", nRet, SQLITE_OK, SQLITE_DONE,SQLITE_ROW); 
 
    if (nRet==SQLITE_OK) 
    { 
        nRet=sqlite3_step(pvm); 
 
        //printf("nRet=%d SQLITE_OK=%d SQLITE_DONE=%d SQLITE_ROW=%d \n", nRet, SQLITE_OK, SQLITE_DONE,SQLITE_ROW); 
 
        if (nRet==SQLITE_ROW) 
        { 
            int nCols = sqlite3_column_count(pvm); 
            //printf("nCols:%d\n", nCols); 
            if (nCols>=1) 
            { 
                return sqlite3_column_int(pvm,0)!=0; 
            } 
        } 
    } 
 
    return false; 

 
int db_exeDML(sqlite3 *db, const char *sql) 

    char* szError=0; 
    int nRet = sqlite3_exec(db, sql, 0, 0, &szError); 
    if (nRet == SQLITE_OK) 
    { 
        return sqlite3_changes(db); 
    } 
    return SQLITE_ERROR; 

 
 
int main(int argc, char **argv) 

 
    sqlite3 *db=0; 
    int  nRet = sqlite3_open("temp.db",&db); 
 
    if (nRet) 
    { 
        fprintf(stderr,"can't open database: %s\n",sqlite3_errmsg(db)); 
        sqlite3_close(db); 
        exit(1); 
    }else{ 
        printf("open database ok.\n"); 
    } 
 
    if (!db_tableExists(db,"tmp")) 
    { 
        printf("create \"tmp\" table\n"); 
        nRet=db_exeDML(db,"CREATE TABLE tmp( IP TEXT, VER TEXT, UID TEXT, FILE TEXT)"); 
        printf("nRet=%d\n", nRet); 
    }else{ 
        nRet=db_exeDML(db,"delete from tmp"); 
        printf("nRet=%d\n", nRet); 
    } 
 
    sqlite3_close(db); 
 
    return 0; 


摘自 杨小卫专栏
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,