最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

linuxCsqlite3mysql_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 20:06:55
文档

linuxCsqlite3mysql_MySQL

linuxCsqlite3mysql_MySQL: /* ********** gcc main.c -lsqlite3 -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ************ SQLITE_OK = 0; 返回成功 SQLITE_ERROR = 1; SQL错误或错误的数据库 SQLITE_INTERNAL = 2; An in
推荐度:
导读linuxCsqlite3mysql_MySQL: /* ********** gcc main.c -lsqlite3 -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ************ SQLITE_OK = 0; 返回成功 SQLITE_ERROR = 1; SQL错误或错误的数据库 SQLITE_INTERNAL = 2; An in

/* ********** gcc main.c -lsqlite3 -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ************

SQLITE_OK = 0; 返回成功
SQLITE_ERROR = 1; SQL错误或错误的数据库
SQLITE_INTERNAL = 2; An internal logic error in SQLite
SQLITE_PERM = 3; 拒绝访问
SQLITE_ABORT = 4; 回调函数请求中断
SQLITE_BUSY = 5; 数据库文件被锁
SQLITE_LOCKED = 6; 数据库中的一个表被锁
SQLITE_NOMEM = 7; 内存分配失败
SQLITE_READONLY = 8; 试图对一个只读数据库进行写操作
SQLITE_INTERRUPT = 9; 由sqlite_interrupt()结束操作
SQLITE_IOERR = 10; 磁盘I/O发生错误
SQLITE_CORRUPT = 11; 数据库磁盘镜像畸形
SQLITE_NOTFOUND = 12; (Internal Only)表或记录不存在
SQLITE_FULL = 13; 数据库满插入失败
SQLITE_CANTOPEN = 14; 不能打开数据库文件
SQLITE_PROTOCOL = 15; 数据库锁定协议错误
SQLITE_EMPTY = 16; (Internal Only)数据库表为空
SQLITE_SCHEMA = 17; 数据库模式改变
SQLITE_TOOBIG = 18; 对一个表数据行过多
SQLITE_CONSTRAINT = 19; 由于约束冲突而中止
SQLITE_MISMATCH = 20; 数据类型不匹配
SQLITE_MISUSE = 21; 数据库错误使用
SQLITE_NOLFS = 22; 使用主机操作系统不支持的特性
SQLITE_AUTH = 23; 非法授权
SQLITE_FORMAT = 24; 辅助数据库格式错误
SQLITE_RANGE = 25; 2nd parameter to sqlite_bind out of range
SQLITE_NOTADB = 26; 打开的不是一个数据库文件
SQLITE_ROW = 100; sqlite_step() has another row ready
SQLITE_DONE = 101; sqlite_step() has finished executing

*************************************************************************************************** */

#include "DB.h"

gseMutex dbMutex=GSE_MUTEX_INIT;
static int IsUpdateAll = 0;
static int iDelCount = 0;
const int FREE_NUM = 1000;
static int needVacuum = 0;

int DBOpen(dbClass *sqlDB, const char *sqlName, char *localhost, char *user, char *password)
{
 if(sqlDB == NULL || sqlName == NULL || 0 == strlen(sqlName))
 {
 gseLog(L_ERROR,"NULL *p");
 return -1;
 }

 int ret = 0;
 if(sqlDB->type == SQL_SQLITE3)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;

 localhost = NULL;
 user = NULL;
 password = NULL;

 char sqlPathName[64]={0};
 sprintf(sqlPathName, "%s", sqlName);
 ret = sqlite3_open(sqlPathName, (struct sqlite3 **)&(sqlDB->db));
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, Cannot open db: %s",ret,sqlite3_errmsg(sqlDB->db));
 }
 gseMutexUnlock(&dbMutex);
// gseLog(L_INFO,"Open database");

 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;
 if(localhost == NULL || user == NULL || password == NULL)
 {
 gseLog(L_ERROR,"localhost user password is NULL");
 return -1;
 }

 char creatDbStr[64]={0};
 char useDbStr[64]={0};
 sprintf(creatDbStr, "create database %s", sqlName);
 sprintf(useDbStr, "use %s", sqlName);

 sqlDB->db= mysql_init(NULL);
 if (sqlDB->db== NULL) 
 {
 gseLog(L_ERROR,"sqlOpen Error 1 %u: %s", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 exit(1);
 }
 if (mysql_real_connect(sqlDB->db, localhost, user, password, NULL, 0, NULL, 0) == NULL)
 {
 gseLog(L_ERROR,"sqlOpen Error 2 %u: %s", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 exit(1);
 }
 ret = mysql_query(sqlDB->db, creatDbStr);
 if (ret) 
 {
 gseLog(L_ERROR,"sqlOpen Error 3 %u: %s", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 }
 ret = mysql_query(sqlDB->db, useDbStr);
 if (ret) 
 {
 gseLog(L_ERROR,"sqlOpen Error 4 %u: %s", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 exit(1);
 }
#endif

 }
 else
 {
 return -2;
 }
 return ret;

}

int DBClose(dbClass *sqlDB)
{
 if(NULL == sqlDB || NULL == sqlDB->db)
 {
 return -1;
 }
 int ret = 0;
 if(sqlDB->type == SQL_SQLITE3)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_close(sqlDB->db);
 gseMutexUnlock(&dbMutex);
 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;
 mysql_close(sqlDB->db);
#endif
 }
 else
 {
 return -2;
 }

// gseLog(L_INFO, "Close database");
 return ret;
}

int DBCreate(dbClass *sqlDB, const char *tableName, char *creatValueStr)
{
 if(sqlDB == NULL || tableName == NULL || creatValueStr == NULL || NULL == sqlDB->db || 0 == strlen(creatValueStr))
 {
 gseLog(L_ERROR,"*db is NULL");
 return -1;
 }

 char *errmsg = 0;
 int ret = 0;
 char createString[MAX_SQLSTR]={0};
 if(strlen(creatValueStr) >= 1)
 creatValueStr[strlen(creatValueStr) - 1]='\0';
 sprintf(createString, "create table %s(%s)", tableName,creatValueStr);
 //create table tb_cardId(cardID KEY, cardNum INT, endDate INT, password NVARCHAR(8))
 memset(creatValueStr, 0, strlen(creatValueStr));

 if(sqlDB->type == SQL_SQLITE3)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_exec(sqlDB->db,createString,NULL,NULL,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, create table fail: %s", ret, errmsg);
 }
 else
 gseLog(L_INFO, "create table %s success.", tableName);
 sqlite3_free(errmsg);
 gseMutexUnlock(&dbMutex);
 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;

 ret = mysql_query(sqlDB->db, createString);
 if (ret)
 {
 gseLog(L_ERROR,"sqlCreate Error %u: %s", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 }
#endif
 }
 else
 {
 return -2;
 }


 return ret;
}

int DBInsert(dbClass *sqlDB, const char *tableName, char *valuesString)
{
 if(sqlDB == NULL || tableName == NULL || valuesString == NULL || NULL == sqlDB->db || 0 == strlen(valuesString))
 {
 gseLog(L_ERROR,"*db is NULL");
 return -1;
 }
 char *errmsg = 0;
 int ret = 0;
 char sqlInsetTable[MAX_SQLSTR]={0};
 if(strlen(valuesString) >= 1)
 valuesString[strlen(valuesString)-1]='\0';
 sprintf(sqlInsetTable, "insert into %s values(%s)",tableName,valuesString);
 //insert into tb_cardId values(1,124343223,20130101,'12345678');
 memset(valuesString, 0, strlen(valuesString));

 if(sqlDB->type == SQL_SQLITE3)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_exec(sqlDB->db,sqlInsetTable,NULL,NULL,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR, "%s",sqlInsetTable);
 gseLog(L_ERROR,"ret = %d, inset table fail: %s",ret,errmsg);
 }
 sqlite3_free(errmsg);
 gseMutexUnlock(&dbMutex);
 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;
 ret = mysql_query(sqlDB->db, sqlInsetTable);
 if (ret)
 {
 gseLog(L_ERROR,"sqlInsert Error 4 %u: %s", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 }
#endif
 }
 else
 {
 ret = -2;
 }
 if(1 == IsUpdateAll && 0 != ret)
 {
 rollBack(sqlDB);
 return ret;
 }

 return ret;
}

int DBUpdate(dbClass *sqlDB, const char *tableName, char *updateSetStr, char *updateWhereStr)
{
 if(sqlDB == NULL || tableName == NULL || updateSetStr == NULL || updateWhereStr == NULL)
 {
 gseLog(L_ERROR,"*db is NULL");
 return -1;
 }
 if(strlen(updateSetStr) >= 1)
 updateSetStr[strlen(updateSetStr)-1]='\0';
 if(strlen(updateWhereStr) >= 3)
 updateWhereStr[strlen(updateWhereStr)-3]='\0';
 char *errmsg = 0;
 int ret = 0;
 char sqlUpdateTable[MAX_SQLSTR]={0};
 sprintf(sqlUpdateTable, "update %s set %s where %s", tableName, updateSetStr, updateWhereStr);
 //update tb_cardID set cardNum=1243423,password='323443' where cardID=1 and endDate=2013;
 memset(updateSetStr, 0, strlen(updateSetStr));
 memset(updateWhereStr, 0, strlen(updateWhereStr));

 if(sqlDB->type == SQL_SQLITE3)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_exec(sqlDB->db,sqlUpdateTable,NULL,NULL,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR, "%s",sqlUpdateTable);
 gseLog(L_ERROR,"ret = %d, update table fail: %s", ret, errmsg);
 }
 sqlite3_free(errmsg);
 gseMutexUnlock(&dbMutex);
 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;
 ret = mysql_query(sqlDB->db, sqlUpdateTable);
 if (ret)
 {
 gseLog(L_ERROR,"sqlUpdate Error 4 %u: %s", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 }
#endif
 }
 else
 {
 ret = -2;
 }
 if(1 == IsUpdateAll && 0 != ret)
 {
 rollBack(sqlDB);
 return ret;
 }

 return ret;
}

int DBSearch(dbClass *sqlDB, const char *tableName, char *searchWhereStr, char (*returnValue)[SEARCH_MAXLEN])
{
 if(sqlDB == NULL || tableName == NULL || searchWhereStr == NULL)
 {
 gseLog(L_ERROR,"*db is NULL");
 return -1;
 }
 char *errmsg = 0;
 int ret = 0;
 char sqlSearchTable[MAX_SQLSTR]={0};
 int i;
 int nRow=0,nColumn=0;

 if(strlen(searchWhereStr) >= 3)
 searchWhereStr[strlen(searchWhereStr)-3]='\0';
 sprintf(sqlSearchTable, "select * from %s where %s",tableName,searchWhereStr);
 //select * from tb_cardID where cardNum=323435;
 memset(searchWhereStr, 0, strlen(searchWhereStr));

 if(sqlDB->type == SQL_SQLITE3)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;
 char **azResult;
 ret = sqlite3_get_table(sqlDB->db, sqlSearchTable, &azResult, &nRow, &nColumn,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR, "%s",sqlSearchTable);
 gseLog(L_ERROR,"ret = %d, search table fail: %s", ret, errmsg);
 }
// gseLog(L_INFO,"row:%d column=%d",nRow, nColumn);
 for(i=nColumn;i<(nRow+1)*nColumn;i++)
 {
// printf("azResult[%d] = %s\n", i, azResult[i]);
 if(azResult[i] != NULL && (*returnValue + SEARCH_MAXLEN*(i-nColumn)) != NULL)
 strcpy(*returnValue + SEARCH_MAXLEN*(i-nColumn), azResult[i]);
 }
 sqlite3_free_table(azResult);
 sqlite3_free(errmsg);
 gseMutexUnlock(&dbMutex);
 if(0 == nRow)
 return 1;
 else if(1 <= nRow)
 return 0;
 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;
 ret = mysql_query(sqlDB->db, sqlSearchTable);
 if (ret)
 {
 gseLog(L_ERROR,"sqlSearch Error 4 %u: %s\n", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 }
 MYSQL_RES *result;
 MYSQL_ROW row;
 MYSQL_FIELD *field;
 int num_fields;
 result = mysql_store_result(sqlDB->db);
 num_fields = mysql_num_fields(result);
 while ((row = mysql_fetch_row(result)))
 {
 nRow++;
 for(i = 0; i < num_fields; i++)
 {
 if (i == 0) {
 while(field = mysql_fetch_field(result)) {
 printf("%s ", field->name);
 }
 printf("\n");
 }
 printf("%s ", row[i] ? row[i] : "NULL");
 }
 }
 printf("\n");
 mysql_free_result(result);

 if(nRow == 0)
 return 0;
 else
 return nRow;
#endif
 }

 return -2;
}

int DBDelete(dbClass *sqlDB, const char *tableName, char *searchWhereStr)
{
 if(sqlDB == NULL || tableName == NULL || searchWhereStr == NULL)
 {
 gseLog(L_ERROR,"*db is NULL");
 return -1;
 }
 char *errmsg = 0;
 int ret = 0;
 char sqlDeleteTable[MAX_SQLSTR]={0};
 if(strlen(searchWhereStr) >= 3)
 {
 searchWhereStr[strlen(searchWhereStr)-3]='\0';
 sprintf(sqlDeleteTable, "delete from %s where %s", tableName, searchWhereStr);
 memset(searchWhereStr, 0, strlen(searchWhereStr));
 }
 else if(strlen(searchWhereStr) == 0)
 sprintf(sqlDeleteTable, "delete from %s", tableName);

 //delete from tb_cardID where cardID=1;
// gseLog(L_DEBUG, "%s",sqlDeleteTable);

 if(sqlDB->type == SQL_SQLITE3)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_exec(sqlDB->db,sqlDeleteTable,NULL,NULL,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, delete table fail: %s", ret, errmsg);
 }
 sqlite3_free(errmsg);
 needVacuum = 1;
#if 0
 if (iDelCount++ > FREE_NUM)
 {
 iDelCount = 0;
 ret = sqlite3_exec(sqlDB->db,"vacuum",NULL,NULL,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, vacuum fail: %s", ret, errmsg);
 }
 sqlite3_free(errmsg);
 }
#endif
 gseMutexUnlock(&dbMutex);
 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;
 ret = mysql_query(sqlDB->db, sqlDeleteTable);
 if (ret)
 {
 printf("sqlDelete Error %u: %s\n", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 }
#endif
 }
 else
 {
 ret = -2;
 }
 if(1 == IsUpdateAll && 0 != ret)
 {
 rollBack(sqlDB);
 return ret;
 }

 return ret;
}

int DBVacuum(dbClass *sqlDB)
{
 if(sqlDB == NULL)
 {
 gseLog(L_ERROR,"*db is NULL");
 return -1;
 }
 char *errmsg = 0;
 int ret = 0;
 if(sqlDB->type == SQL_SQLITE3 && 1 == needVacuum)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_exec(sqlDB->db,"vacuum",NULL,NULL,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, vacuum fail: %s", ret, errmsg);
 }
 else
 {
 needVacuum = 0;
 }
 sqlite3_free(errmsg);
 gseMutexUnlock(&dbMutex);
 }
 return ret;
}

int DBIndex(dbClass *sqlDB, const char *tableName, char *indexName, char *columnName)
{
 if(sqlDB == NULL || tableName == NULL || indexName == NULL || columnName == NULL)
 {
 gseLog(L_ERROR,"SQLITE_Index NULL *p"); 
 return -1;
 }
 int ret = 0;
 char *errmsg = 0;
 char sqlCreateIndex[MAX_SQLSTR]={0};
 sprintf(sqlCreateIndex, "create index %s on %s(%s)", indexName, tableName, columnName);
// gseLog(L_DEBUG, "%s",sqlCreateIndex);

 if(sqlDB->type == SQL_SQLITE3)
 {
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_exec(sqlDB->db,sqlCreateIndex,NULL,NULL,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, index table fail: %s", ret, errmsg);
 }
 sqlite3_free(errmsg);
 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;
 ret = mysql_query(sqlDB->db, sqlCreateIndex);
 if (ret)
 {
 printf("sqlIndex Error %u: %s\n", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 }
#endif
 }

 return ret;
}

int DBGetIdKey(dbClass *sqlDB, const char *tableName, const char *keyName, char (*returnValue)[ID_KEYLEN])
{
 if(sqlDB == NULL || tableName == NULL || keyName== NULL)
 {
 gseLog(L_ERROR,"*db is NULL");
 return -1;
 }
 char *errmsg = 0;
 int ret = 0;
 char sqlSearchTable[MAX_SQLSTR]={0};
 int i;
 int nRow=0,nColumn=0;

 sprintf(sqlSearchTable, "select %s from %s", keyName, tableName);

 if(sqlDB->type == SQL_SQLITE3)
 {
 gseMutexLock(&dbMutex);
 sqlDB->db = (sqlite3 *)sqlDB->db;
 char **azResult;
 ret = sqlite3_get_table(sqlDB->db, sqlSearchTable, &azResult, &nRow, &nColumn,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR, "%s",sqlSearchTable);
 gseLog(L_ERROR,"ret = %d, search table fail: %s", ret, errmsg);
 }
// gseLog(L_INFO,"row:%d column=%d",nRow, nColumn);
 for(i=nColumn;i<(nRow+1)*nColumn;i++)
 {
// printf("azResult[%d] = %s\n", i, azResult[i]);
 if(azResult[i] != NULL && (*returnValue + ID_KEYLEN*(i-nColumn)) != NULL)
 strcpy(*returnValue + ID_KEYLEN*(i-nColumn), azResult[i]);
 else
 break;
 }
 sqlite3_free_table(azResult);
 sqlite3_free(errmsg);
 gseMutexUnlock(&dbMutex);
 if(nRow == 0)
 return 0;
 else
 return nRow;
 }
 else if(sqlDB->type == SQL_MYSQL)
 {
#ifdef MYSQL_DEFINE
 sqlDB->db = (MYSQL *)sqlDB->db;
 ret = mysql_query(sqlDB->db, sqlSearchTable);
 if (ret)
 {
 gseLog(L_ERROR,"sqlSearch Error 4 %u: %s\n", mysql_errno(sqlDB->db), mysql_error(sqlDB->db));
 }
 MYSQL_RES *result;
 MYSQL_ROW row;
 MYSQL_FIELD *field;
 int num_fields;
 result = mysql_store_result(sqlDB->db);
 num_fields = mysql_num_fields(result);
 while ((row = mysql_fetch_row(result)))
 {
 nRow++;
 for(i = 0; i < num_fields; i++)
 {
 if (i == 0) {
 while(field = mysql_fetch_field(result)) {
 printf("%s ", field->name);
 }
 printf("\n");
 }
 printf("%s ", row[i] ? row[i] : "NULL");
 }
 }
 printf("\n");
 mysql_free_result(result);

 if(nRow == 0)
 return 0;
 else
 return nRow;
#endif
 }

 return -2;
}

int DBExecSql(dbClass *sqlDB, const char *sqlStr)
{
 if(sqlDB == NULL || sqlStr == NULL)
 {
 gseLog(L_ERROR,"*db is NULL");
 return -1;
 }
 char *errmsg = 0;
 int ret = 0;

 if(sqlDB->type == SQL_SQLITE3)
 {
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_exec(sqlDB->db,sqlStr,NULL,NULL,&errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, exec sql(%s) fail: %s", ret, sqlStr, errmsg);
 }
 sqlite3_free(errmsg);
 }
 else if(sqlDB->type == SQL_MYSQL)
 {

 }

 return ret;
}

int dbAddColumn(char *createString, const char *keyName, const char *keyClass)
{
 if(createString == NULL || keyName == NULL || keyClass == NULL)
 return -1;
 char tmpKey[128];
 sprintf(tmpKey, "%s %s,", keyName, keyClass);
 strcat(createString, tmpKey);
 return 0;
}

int dbInsertColumn(char *insertString, char *value)
{
 if(insertString == NULL || value == NULL)
 return -1;
 strcat(insertString,value);
 strcat(insertString,",");
 return 0;
}

int dbUpdateSet(char *updateSetStr, const char *setKey, char *setValue)
{
 if(updateSetStr == NULL || setKey == NULL || setValue == NULL)
 return -1;
 char tmpStr[128]={0};
 sprintf(tmpStr, " %s=%s,", setKey, setValue);
 strcat(updateSetStr, tmpStr);
 return 0;

}

int dbSearchWhere(char *searchWhereStr, const char *whereKey, char *whereValue)
{
 if(searchWhereStr == NULL || whereKey == NULL || whereValue == NULL)
 return -1;
 char tmpStr[128]={0};
 sprintf(tmpStr, " %s=%s and", whereKey, whereValue);
 strcat(searchWhereStr , tmpStr);
 return 0;
}

int setFlagIsUpdateAll(dbClass *sqlDB, int n)
{
 int ret= 0;
 IsUpdateAll = n;
 if(-1 == IsUpdateAll)
 ret = rollBack(sqlDB);
 return ret;
}

int getFlagIsUpdateAll()
{
 return IsUpdateAll;
}

int beginExclusive(dbClass *sqlDB)
{
 int ret=0;
 char *errmsg = 0;
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret = sqlite3_exec(sqlDB->db,"BEGIN EXCLUSIVE", NULL,NULL, &errmsg); 
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, BEGIN EXCLUSIVE: %s", ret, errmsg);
 }
 sqlite3_free(errmsg);

 return ret;
}

int commitSQL(dbClass *sqlDB)
{
 int ret=0;
 char *errmsg = 0;
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret=sqlite3_exec(sqlDB->db,"COMMIT", NULL,NULL, &errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, COMMIT: %s", ret, errmsg);
 }
 sqlite3_free(errmsg);

 return ret;
}

int rollBack(dbClass *sqlDB)
{
 int ret=0;
 char *errmsg = 0;
 sqlDB->db = (sqlite3 *)sqlDB->db;
 ret=sqlite3_exec(sqlDB->db,"ROLLBACK", NULL,NULL, &errmsg);
 if(ret != SQLITE_OK)
 {
 gseLog(L_ERROR,"ret = %d, ROLLBACK: %s", ret, errmsg);
 }
 sqlite3_free(errmsg);
 return ret;
}

#ifdef MAIN_TEST
void main()
{
 char createValueStr[MAX_SQLSTR]={0};
 char insertString[MAX_SQLSTR]={0};
 char updateSetStr[MAX_SQLSTR]={0};
 char searchWhereStr[MAX_SQLSTR]={0};
 char *dbFileName="lkdb";
 char *tableName="tb";
 char *colList[]={"ID","names","sexsex"};
 int ret=0;

 timeLog();
 dbClass sqlDB;
 sqlDB.type = SQL_SQLITE3;
 DBOpen(&sqlDB, dbFileName, NULL, NULL, NULL);

// sqlDB.type = SQL_MYSQL;
// DBOpen(&sqlDB, dbFileName, "localhost", "root", "mima");
#if 1
 dbAddColumn(createValueStr, colList[0], PRIMAY_KEY);
 dbAddColumn(createValueStr, colList[1], NVARCHAR_32);
 dbAddColumn(createValueStr, colList[2], NVARCHAR_32);
 DBCreate(&sqlDB, tableName, createValueStr);

 dbInsertColumn(insertString, "1");
 dbInsertColumn(insertString, "'y_jg'");
 dbInsertColumn(insertString, "'man'");
 DBInsert(&sqlDB,tableName,insertString);
 dbInsertColumn(insertString, "2");
 dbInsertColumn(insertString, "'lk'");
 dbInsertColumn(insertString, "'man'");
 DBInsert(&sqlDB,tableName,insertString);
 dbInsertColumn(insertString, "3");
 dbInsertColumn(insertString, "'fqq'");
 dbInsertColumn(insertString, "'woman'");
 DBInsert(&sqlDB,tableName,insertString);
 dbInsertColumn(insertString, "4");
 dbInsertColumn(insertString, "'xf'");
 dbInsertColumn(insertString, "'man'");
 DBInsert(&sqlDB,tableName,insertString);
#endif
 dbUpdateSet(updateSetStr,"names", "'xxxx'");
 dbSearchWhere(searchWhereStr,"id","3");
 DBUpdate(&sqlDB,tableName,updateSetStr,searchWhereStr);
 DBClose(&sqlDB);

 timeLog();

}
#endif

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

linuxCsqlite3mysql_MySQL

linuxCsqlite3mysql_MySQL: /* ********** gcc main.c -lsqlite3 -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ************ SQLITE_OK = 0; 返回成功 SQLITE_ERROR = 1; SQL错误或错误的数据库 SQLITE_INTERNAL = 2; An in
推荐度:
标签: linux SQLite mysql
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top