C语言操作sqlite数据库

//#include "initqtouchvar.h"

#include <math.h>

#include <stdio.h>

#include <stdarg.h>

#include <time.h>

#include <stdio.h>

#include "sqlite3.h"

#include "script.h"

 

#define MAX_LINE 1024

int callback(void *data, int argc, char **argv, char **colName);

int write_log (FILE* pFile, const char *format, ...) {

va_list arg;

int done;

 

va_start (arg, format);

//done = vfprintf (stdout, format, arg);

 

time_t time_log = time(NULL);

struct tm* tm_log = localtime(&time_log);

fprintf(pFile, "%04d-%02d-%02d %02d:%02d:%02d ", tm_log->tm_year + 1900, tm_log->tm_mon + 1, tm_log->tm_mday, tm_log->tm_hour, tm_log->tm_min, tm_log->tm_sec);

 

done = vfprintf (pFile, format, arg);

va_end (arg);

 

fflush(pFile);

return done;

}

/*

int main( )

{

//初始化

InitQTouchVar();

int sread[20];

char buf[1024];

FILE *fp;

int len;

int z=0;

if((fp = fopen("test.txt","r")) == NULL)

{

perror("fail to read");

exit (1) ;

}

while(fgets(buf,MAX_LINE,fp) != NULL)

{

len = strlen(buf);

buf[len-1] = '\0';

printf("%s %d \n",buf,len - 1);

//int kread=atoi(buf);

sread[z]=atoi(buf);

printf("data:%d \n",sread[z]);

z++;

 

}

 

while (1) {

//自定义逻辑

//通过变量名的指针可以访问变量对象的读写,如:

//double avalue = var0->dValue;

//var0->dValue = 123;

//通过变量名+Index的方式可以访问变量在数据库中的id;如:var0Index;注意变量的

//id请不要在外部进行修改,初始化的时候已经完成,外部可以应用其值

//id为变量在实时数据库中的索引,也可以通过实时数据库工具查看,其中的内存编号就是对应的id

//对于组变量的访问方式:组名->变量名.值,如:

//zone1.var0->dValue = 123;

//double avalue = zone1.var0->dValue;

//为了能够正确的在C中识别组名,变量名,请注意在命名的时候不要出现C中的关键字或者不识别的命名方式

 

//下发控制指令的操作

while (GetKcFlag(0)){

//在系统没有正在下发指令的时候才可以进行新的指令操作

//调用下发指令,id为变量在实时数据库中的索引,dada为下发的指令内容,以short为基准(一个modbus寄存器)

//比如写一个modbus寄存器数据123,那么data为“123”,如果连续写多个寄存器的值的话,按照“123 123”来进行,中间按照空格隔开

//SetKcData(0, int id,char *data);

//SetKcFlag(0,1);//通知系统有指令下发

}

 

waitForMillisec(200);

}

return 0;

}

*/

int main()

{

sqlite3 *db;

printf("ssss");

if (sqlite3_open("DBFile.db", &db))

{

printf("Can't open database: %s\n", sqlite3_errmsg(db));

exit(0);

}

else

{

 

char *errMsg;

double svalue=2.234;

//char svalueChar[20];

//sprintf(svalueChar,"%2f",svalue);

char *sql_ = "DROP TABLE IF EXISTS STUDENT;"

"CREATE TABLE STUDENT(rollNum INT, Name TEXT, Section varchar );"

"INSERT INTO STUDENT VALUES(1, 'Arvind', 'A');"

"INSERT INTO STUDENT VALUES(2, 'Amit', 'C');"

"INSERT INTO STUDENT VALUES(3, 'Shivang', 'A');"

"INSERT INTO STUDENT VALUES(4, 'RAGHU', 'A');"

"INSERT INTO STUDENT VALUES(5, 'SACHIN', 'C');"

"INSERT INTO STUDENT VALUES(6, 'ssss', 'B');";

 

//int rec = sqlite3_exec(db, sql_, 0, 0, &errMsg);

//

printf("Opened database successfully\n");

char sql[100] = "select * from STUDENT";

sprintf(sql,"INSERT INTO STUDENT VALUES(6, %f, 'B');",svalue);

const char* data = "Callback function called";

 

if(SQLITE_OK == sqlite3_exec(db, sql, callback, (void*)data, &errMsg))

{

printf("Operation done successfully\n");

 

}

else

{

printf("SQL error: %s\n", errMsg);

sqlite3_free(errMsg);

}

}

sqlite3_close(db);

return 0;

}

int callback(void *data, int argc, char **argv, char **colName)

{

int i;

fprintf(stderr, "%s:\n", (const char*)data);

for(i=0; i<argc; i++)

{

printf("%s = %s\n", colName[i], argv[i] ? argv[i] : "NULL");

}

printf("\n");

return 0;

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值