C语言读写SQLite数据库
1环境win10 + Qt 5.9 + sqlite 3 2Qt工程配置TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.c
INCLUDEPATH += $$_PRO_FILE_PWD_/sqlite3
LIBS += -L $$_PRO_FILE_PWD_/sqlite3 -lsqlite3
3sqlite3接口介绍3.1 int sqlite3_open函数声明 int sqlite3_open( 3.2 int sqlite3_close函数声明 int sqlite3_close( 3.3 sqlite3_exec函数声明 int sqlite3_exec( 3.3 typedef int (*sqlite3_callback)函数声明 typedef int (*sqlite3_callback)( 返回值 3.3 int sqlite3_get_table函数声明 int sqlite3_get_table( int * 行数 3代码示例#include <stdio.h>
#include "sqlite3.h"
//读多少行,就执行多少次回调
#if 0
argc 3
argv **
char * caocao
char * weiguo
char * 100000
colName
char * name
char * address
char * salary
#endif
#if 0
argc 3
argv **
char * suquan
char * wuguo
char * 20000
colName
char * name
char * address
char * address
#endif
#if 0
char **
char *name
char *address
char *salary
char *caocao
char *weiguo
char *100000
char *suquan
char *wuguo
char *20000
#endif
static int callback(void *NotUsed,int argc,char **argv,char **ColName)
{
// printf("argc = %dn",argc);
// int i;
// for(i=0; i<argc; i++){
// printf("%s = %sn",ColName[i],argv[i] ? argv[i] : "NULL");
// }
// printf("n");
static int flag = 1;
if(flag)
{
for(int i=0; i<argc; i++)
printf("%st",ColName[i]);
flag = 0;
}
putchar(10);
for(int i=0; i<argc; i++)
printf("%st",argv[i]);
return 0;
}
int main(int argc,char *argv[])
{
sqlite3 *db; // FILE*
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("mydb",&db);
if( rc ){
fprintf(stderr,"Can't open database: %sn",sqlite3_errmsg(db));
sqlite3_close(db);
return(1);
}
// rc = sqlite3_exec(db,argv[2],callback,0,&zErrMsg);
// if( rc!=SQLITE_OK ){
// fprintf(stderr,"SQL error: %sn",zErrMsg);
// sqlite3_free(zErrMsg);
// }
char *sql;
// char* sql = "create table salary(name text,address text,salary REAL)";
// rc = sqlite3_exec(db,sql,NULL,zErrMsg);
// sqlite3_free(zErrMsg);
// }
#if 0
sql = "insert into salary values("caocao","weiguo",10000)";
rc = sqlite3_exec(db,&zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr,zErrMsg);
sqlite3_free(zErrMsg);
}
sql = "insert into salary values("sunquan","wuguo",100000)";
rc = sqlite3_exec(db,zErrMsg);
sqlite3_free(zErrMsg);
}
sql = "insert into salary values("liube","shuguo",20000)";
rc = sqlite3_exec(db,zErrMsg);
sqlite3_free(zErrMsg);
}
float salary;
printf("刘备的工资:");
scanf("%f",&salary);
char sqlcombine[1024];
sprintf(sqlcombine,"update salary set salary = %f where name = "liube"",salary);
rc = sqlite3_exec(db,sqlcombine,zErrMsg);
sqlite3_free(zErrMsg);
}
sql = "delete from salary where name = "liube"";
rc = sqlite3_exec(db,zErrMsg);
sqlite3_free(zErrMsg);
}
sql = "select * from salary";
rc = sqlite3_exec(db,zErrMsg);
sqlite3_free(zErrMsg);
}
#endif
sql = "select * from salary";
char **table = NULL;
int row;
int column;
rc = sqlite3_get_table(db,&table,&row,&column,zErrMsg);
sqlite3_free(zErrMsg);
}
for(int i=0; i<column; i++)
{
printf("%st",table[i]);
}
putchar(10);
for(int i=column; i<(row+1)*column; i++)
{
printf("%st",table[i]);
if(!((i+1)%column))
putchar(10);
}
sqlite3_free_table(table);
sqlite3_close(db);
return 0;
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |