⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db_sqlite.c

📁 eybuild-x86-arm920t-2.6.7.tar 很好的嵌入式WEB开发环境
💻 C
字号:
/* db_sqlite.c -  *//* Copyright(C) eyBuild Group, 2005, 2006. All Rights Reserved. *//* http://www.eybuild.com *//*modification history01a, 2005-04-03, newzy  writen*//*DESCRIPTIONthis module is for suport mysql.Thanks for xxt help.    ALSO SEE:db.c db.h*/#include <stdio.h>#include <string.h>#ifdef WIN32#include <windows.h> #endif#include "sqlite3.h"#include <undef.h>#include "db.h"#include <ebdef.h>/* database info */typedef struct {    char *          dbname;    char *          table_name;    sqlite3 *       mydata;    sqlite3_stmt *  records;} DB_INFO;/* open data base */void * open_db(char * mode){    DB_INFO *       db_fp = NULL;    char *          tail = NULL;        db_fp = (DB_INFO *)malloc(sizeof(DB_INFO));    memset(db_fp, 0, sizeof(DB_INFO));    db_fp->dbname = "sqlite_" DB_NAME;    db_fp->table_name = TAB_NAME;        /* open talbe */    if (SQLITE_OK != sqlite3_open(db_fp->dbname, &db_fp->mydata))    {        free(db_fp);        return NULL;    }        /* table query init */    if (SQLITE_OK != sqlite3_prepare(db_fp->mydata,             "select * from " TAB_NAME,             -1, &db_fp->records, &tail))    {        close_db(db_fp);        free(db_fp);        return NULL;    }    return db_fp;}/* close data base */int close_db(void * fp){    DB_INFO *       db_fp = (DB_INFO *)fp;    if (NULL == fp)        return ERROR;            sqlite3_finalize(db_fp->records);        if (db_fp->mydata)        sqlite3_close(db_fp->mydata);            free (db_fp);    return OK;  }/* read record from base */int db_read_next(void * fp, RECORD * rcd){    DB_INFO *       db_fp = (DB_INFO *)fp;    char *          row[5];    int             ret = OK;    int             i;    /* get records from server */    if (NULL == db_fp)        return ERROR;            do {        ret = sqlite3_step(db_fp->records);    } while (ret == SQLITE_BUSY || ret == SQLITE_LOCKED);    if (SQLITE_ROW != ret)        return 0;    for (i=0; i<sizeof(row)/sizeof(row[0]); i++)    {        row[i] = (char*)sqlite3_column_text(db_fp->records, i);        if (NULL == row[i])            row[i] = "";    }        strcpy(rcd->name, row[0]);    strcpy(rcd->sex, row[1]);    strcpy(rcd->mail, row[2]);    strcpy(rcd->now, row[3]);    strcpy(rcd->msg, row[4]);    rcd->msg_len = strlen(rcd->msg);        return sizeof(RECORD);}/* insert record to data base */extern int sqlite_snprintf(size_t len, char * buf, char * fmt, ...);int db_insert(void * fp, RECORD * rcd){    DB_INFO *       db_fp = (DB_INFO *)fp;    char            strsql[sizeof(RECORD)*2] = "";    char *          errmsg = NULL;        /* get records from server */    if (NULL==db_fp || NULL==db_fp->mydata)        return ERROR;            sqlite_snprintf(sizeof(RECORD), strsql,             "insert into %s (name,sex,mail,date,msg) "            "values(\'%s\', \'%s\', \'%s\', \'%s\', \'%s\')",            db_fp->table_name,            rcd->name,            rcd->sex,            rcd->mail,            rcd->now,            rcd->msg            );         if (SQLITE_OK != sqlite3_exec(db_fp->mydata, strsql, NULL, 0, &errmsg))     {         free(errmsg);        close_db(db_fp);         return ERROR;     }        free(errmsg);    return sizeof(RECORD);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -