C语言中 sqlite3 的 一些调用方式

3 篇文章 0 订阅
2 篇文章 0 订阅
这篇博客详细介绍了如何在C语言中使用sqlite3库进行数据库操作,包括创建数据库、创建表、清空表、插入数据和查询数据的步骤。示例代码展示了如何执行SQL语句,如BEGIN、COMMIT事务,以及INSERT、SELECT操作。
摘要由CSDN通过智能技术生成


1.创建数据库


2.创建表



3.清空表中数据



4.插入数据

/****************insert data prepare********************/
sqlite3_stmt* stmt1 = NULL;
const char* beginSQL = "BEGIN TRANSACTION";
if (sqlite3_prepare_v2(conn,beginSQL,strlen(beginSQL),&stmt1,NULL) !=SQLITE_OK)
{
if (stmt1)
sqlite3_finalize(stmt1);
sqlite3_close(conn);
return;
}


if (sqlite3_step(stmt1) != SQLITE_DONE) {
sqlite3_finalize(stmt1);
sqlite3_close(conn);
return;
}
sqlite3_finalize(stmt1);
/******************bind and insert****************************/
const char* insertSQL = "INSERT INTO basicpower VALUES(?,?)";
sqlite3_stmt* stmt3 = NULL;
if (sqlite3_prepare_v2(conn,insertSQL,strlen(insertSQL),&stmt3,NULL) != SQLITE_OK) {
if (stmt3)
sqlite3_finalize(stmt3);
sqlite3_close(conn);
return;
}
//char a[2000];
for(i=0;i<len;i++)
{
sqlite3_bind_int(stmt3,1,i);
sqlite3_bind_int(stmt3,2,data[i]);
//将数组中的数据绑定,然后插入表中

if (sqlite3_step(stmt3) != SQLITE_DONE) {
sqlite3_finalize(stmt3);
sqlite3_close(conn);
return;
}
/*****重新初始化该sqlite3_stmt对象绑定的变量。***/
sqlite3_reset(stmt3);
printf("Insert Succeed.\n");


}
sqlite3_finalize(stmt3);
/********提交之前的事物。********/
const char* commitSQL = "COMMIT";
sqlite3_stmt* stmt4 = NULL;
if (sqlite3_prepare_v2(conn,commitSQL,strlen(commitSQL),&stmt4,NULL) !=SQLITE_OK) {
if (stmt4)
sqlite3_finalize(stmt4);
sqlite3_close(conn);
return;
}
if (sqlite3_step(stmt4) != SQLITE_DONE) {
sqlite3_finalize(stmt4);
sqlite3_close(conn);
return;
}
printf("finish insert data ok\n");
sqlite3_finalize(stmt4);



5.取出数据

const char* selectSQL = "SELECT data FROM basicpower";
//直接选择要查询的数据列
sqlite3_stmt* stmt3 = NULL;
if (sqlite3_prepare_v2(conn,selectSQL,strlen(selectSQL),&stmt3,NULL) !=SQLITE_OK) {
if (stmt3)
sqlite3_finalize(stmt3);
sqlite3_close(conn);
return;
}
int count=0;
int fieldCount = sqlite3_column_count(stmt3);
//有几个要查询的列。这里就一个data数据列
printf("the count is %d \n",fieldCount);
do{
int i;
int r = sqlite3_step(stmt3);
if (r == SQLITE_ROW) {
for (i = 0; i < fieldCount; ++i) { 
int vtype = sqlite3_column_type(stmt3,i);
if (vtype == SQLITE_INTEGER) {
int v = sqlite3_column_int(stmt3,i);
//printf("The INTEGER value is %d.\n",v);
data[count]=v;
//将取出的数据放入要发送的数组中后面的判断是对其他类型的。

} else if (vtype == SQLITE_FLOAT) {
double v = sqlite3_column_double(stmt3,i);
printf("The DOUBLE value is %f.\n",v);
} else if (vtype == SQLITE_TEXT) {
const char* v = (const char*)sqlite3_column_text(stmt3,i);
printf("The TEXT value is %s.\n",v);
} else if (vtype == SQLITE_NULL) {
printf("This value is NULL.\n");
}
}
}else if (r == SQLITE_DONE) {
printf("Select Finished.\n");
break;
} else {
printf("Failed to SELECT.\n");
sqlite3_finalize(stmt3);
sqlite3_close(conn);
return;
}


count++;
//循环将取出的值放入data[count]数组中
}while(1);
sqlite3_finalize(stmt3);
break;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值