站内搜索

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 internal logic error in SQLiteSQLITE_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 rangeSQLITE_NOTADB = 26; 打开的不是一个数据库文件SQLITE_ROW = 100; sqlite_step() has another row readySQLITE_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_TESTvoid 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
  • 上一篇:MySQL中EXPLAIN的解释_MySQL
  • 下一篇:Linux安装MySQL以及一些常见问题解决方案_MySQL