#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;
}
#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;
}