SQLite3 测试程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>

#define SIZE 64

int bspsql_Callback(void *v, int lCount, char **ppszValue, char **ppszName);
int main(int argc,char **argv)
{
    int lInt = 0;
    int lSts;
    int lCount;
    int lNcols;
    char szSql[50];
    sqlite3 *psqDb;
    sqlite3_stmt *psqStmt;
    char *pszSql;
    char *pszErrmsg;
    const char *pszTail;

    lInt = 0;
    lSts = 0;
    lCount = 0;
    lNcols = 0;
    psqDb = NULL;
    psqStmt = NULL;
    pszSql = szSql;
    pszErrmsg = NULL;

    memset(szSql, 0, sizeof(szSql));

    //打开数据库
    lSts = sqlite3_open("test.db",&psqDb);
    if(lSts != SQLITE_OK)
    {
        fprintf(stderr,"Can't open database:%s\n",sqlite3_errmsg(psqDb));
        sqlite3_close(psqDb);
        exit(1);
    }


    printf("请输入Sql语句:");
    do
    {
        scanf("%c",&szSql[lInt++]);
    }while(szSql[lInt-1] != '\n');
    //pszSql = "select * from test";

#if 1
    //预处理
    lSts = sqlite3_prepare(psqDb, pszSql, (int)strlen(pszSql), &psqStmt, &pszTail);
    if(lSts != SQLITE_OK)
    {
        fprintf(stderr, "SQLerror:%s\n",sqlite3_errmsg(psqDb));
        sqlite3_close(psqDb);
        exit(1);
    }

    lSts = sqlite3_step(psqStmt);
    lNcols = sqlite3_column_count(psqStmt);
    while(lSts == SQLITE_ROW)
    {
        for(lCount = 0; lCount<lNcols; lCount++)
        {
            fprintf(stderr,"%s ",sqlite3_column_text(psqStmt,lCount));
        }
        fprintf(stderr,"\n");
        lSts = sqlite3_step(psqStmt);
    }

    //释放statement
    sqlite3_finalize(psqStmt);
#endif

#if 1
    lSts = sqlite3_exec(psqDb, pszSql, bspsql_Callback, NULL, &pszErrmsg);
    if(lSts != SQLITE_OK)
    {
        fprintf(stderr, "SQLerror:%s\n",sqlite3_errmsg(psqDb));
        sqlite3_close(psqDb);
        exit(1);
    }
#endif

#if 1
    int lRow;
    int lCol;
    int lI;
    int lJ;
    char szStr[SIZE];
    char **ppszResult;

    lRow = 0;
    lCol = 0;
    lI = 0;
    lJ = 0;
    ppszResult = NULL;
    
    memset(szStr, 0, (sizeof(szStr)));
    
    lSts = sqlite3_get_table(psqDb, pszSql, &ppszResult, &lRow, &lCol, &pszErrmsg);
    if(lSts != SQLITE_OK)
    {
        fprintf(stderr, "SQLerror:%s\n",sqlite3_errmsg(psqDb));
        sqlite3_close(psqDb);
        exit(1);
    }

    for(lI=0; lI<=lRow; lI++)
    {
        //for(lJ=0; lJ<lCol; lJ++)
        {
            fprintf(stderr, "%s %s\n", ppszResult[lCol * lI], ppszResult[lCol * lI + 1]);
            //strcat(szStr, ppszResult[lIndex]);
            //strcat(szStr, "\n");
            //lIndex++;
        }
    }
    //printf("%s\n",szStr);
    sqlite3_free_table(ppszResult);
#endif


    //关闭数据库
    sqlite3_close(psqDb);

    return 0;
}

int bspsql_Callback(void *v, int lCount, char **ppszValue, char **ppszName)
{
    int lCou;
    char szStr[128];

    lCou = 0;
    memset(szStr, 0, (sizeof(szStr)));

    for(lCou=0; lCou<lCount; lCou++)
    {
        fprintf(stderr, "%s = %s ", ppszName[lCou], ppszValue[lCou]);
        //strcat(szStr, ppszValue[lCou]);
        //strcat(szStr, "\n");
    }
    fprintf(stderr, "\n");
    //printf("%s\n",szStr);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值