加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite函数应用(一)

发布时间:2020-12-12 20:34:00 所属栏目:百科 来源:网络整理
导读:打开数据库:sqlite3_open() int sqlite3_open( const char *filename,/* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */); filename 参数是文件名,或字符串 ':memory:' ,或一个空指针 (NULL) 。用后两者将创建内存数据库。 如

打开数据库:sqlite3_open()

int sqlite3_open(
    const char *filename,/* Database filename (UTF-8) */
    sqlite3 **ppDb 			/* OUT: SQLite db handle */
); 

filename参数是文件名,或字符串':memory:',或一个空指针(NULL)。用后两者将创建内存数据库。

如果文件不存在,则用这个名字创建一个新的数据库。

关闭连接:sqlite3_close()

int sqlite3_close(sqlite3*); 

执行SQL命令:sqlite3_exec()

int sqlite3_exec( 
    sqlite3*,/* An open database */ 
    const char *sql,/* SQL to be executed */ 
    sqlite_callback,/* Callback function */ 
    void *data       /* 1st argument to callback function */ 
    char **errmsg    /* Error msg written here */ 
);

sqlite3_exec()包含一个回叫(callback)机制,提供了一种从SELECT语句得到结果的方法

sqlite3_exec()函数第3个参数是一个指向回叫函数的指针,如果提供了回叫函数,SQLite则会在执行SELECT语句时为遇到的每一条记录都调用回叫函数

回叫函数:callback()

typedef int (*sqlite3_callback)( 
    void* data,/* Data provided in the 4th argument of sqlite3_exec() */ 
    int ncols,/* The number of columns in row */ 
    char** values,/* An array of strings representing fields in the row */ 
    char** headers    /* An array of strings representing column names */ 
); 

示例:

#include <stdio.h>
#include <stdlib.h>
#include "util.h"
#pragma comment(lib,"sqlite3.lib")

int callback(void* data,int ncols,char** values,char** headers);

int main(int argc,char **argv)
{
    sqlite3 *db;
    int rc;
    char *sql;
    char *zErr;
    char* data;

    rc = sqlite3_open("test.db",&db);
    if(rc) 
    {
        fprintf(stderr,"Can't open database: %sn",sqlite3_errmsg(db));
        sqlite3_close(db);
        exit(1);
    }
    
    data = "Callback function called";
    sql = "insert into episodes (name,cid) values ('Mackinaw Peaches',1);"
          "select * from episodes;";
    rc = sqlite3_exec(db,sql,callback,data,&zErr);

    if(rc != SQLITE_OK) 
    {
        if (zErr != NULL)
        {
            fprintf(stderr,"SQL error: %sn",zErr);
            sqlite3_free(zErr);
        }
    }

    sqlite3_close(db);

    return 0;    
}

int callback(void* data,char** headers)
{
    int i;
    fprintf(stdout,"%s: ",(const char*)data);
    for(i=0; i < ncols; i++) 
    {
        fprintf(stdout,"%s=%s ",headers[i],values[i]);
    }

    fprintf(stdout,"n");
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读