📄 db_sqlite.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 + -