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

前端之家收集整理的这篇文章主要介绍了C语言中 sqlite3 的 一些调用方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_404_1@

1.创建数据库

@H_404_1@

2.创建表

@H_404_1@

@H_404_1@

3.清空表中数据

@H_404_1@

@H_404_1@

4.插入数据

/****************insert data prepare********************/@H_404_1@ sqlite3_stmt* stmt1 = NULL;@H_404_1@ const char* beginsql = "BEGIN TRANSACTION";@H_404_1@ if (sqlite3_prepare_v2(conn,beginsql,strlen(beginsql),&stmt1,NULL) !=sqlITE_OK)@H_404_1@ {@H_404_1@ if (stmt1)@H_404_1@ sqlite3_finalize(stmt1);@H_404_1@ sqlite3_close(conn);@H_404_1@ return;@H_404_1@ }@H_404_1@ @H_404_1@ @H_404_1@ if (sqlite3_step(stmt1) != sqlITE_DONE) {@H_404_1@ sqlite3_finalize(stmt1);@H_404_1@ sqlite3_close(conn);@H_404_1@ return;@H_404_1@ }@H_404_1@ sqlite3_finalize(stmt1);@H_404_1@ /******************bind and insert****************************/@H_404_1@ const char* insertsql = "INSERT INTO basicpower VALUES(?,?)";@H_404_1@ sqlite3_stmt* stmt3 = NULL;@H_404_1@ if (sqlite3_prepare_v2(conn,insertsql,strlen(insertsql),&stmt3,NULL) != sqlITE_OK) {@H_404_1@ if (stmt3)@H_404_1@ sqlite3_finalize(stmt3);@H_404_1@ sqlite3_close(conn);@H_404_1@ return;@H_404_1@ }@H_404_1@ //char a[2000];@H_404_1@ for(i=0;i<len;i++)@H_404_1@ {@H_404_1@ sqlite3_bind_int(stmt3,1,i);@H_404_1@ sqlite3_bind_int(stmt3,2,data[i]);@H_404_1@ //将数组中的数据绑定,然后插入表中@H_404_1@ @H_404_1@ if (sqlite3_step(stmt3) != sqlITE_DONE) {@H_404_1@ sqlite3_finalize(stmt3);@H_404_1@ sqlite3_close(conn);@H_404_1@ return;@H_404_1@ }@H_404_1@ /*****重新初始化该sqlite3_stmt对象绑定的变量。***/@H_404_1@ sqlite3_reset(stmt3);@H_404_1@ printf("Insert Succeed.\n");@H_404_1@ @H_404_1@ @H_404_1@ }@H_404_1@ sqlite3_finalize(stmt3);@H_404_1@ /********提交之前的事物。********/@H_404_1@ const char* commitsql = "COMMIT";@H_404_1@ sqlite3_stmt* stmt4 = NULL;@H_404_1@ if (sqlite3_prepare_v2(conn,commitsql,strlen(commitsql),&stmt4,NULL) !=sqlITE_OK) {@H_404_1@ if (stmt4)@H_404_1@ sqlite3_finalize(stmt4);@H_404_1@ sqlite3_close(conn);@H_404_1@ return;@H_404_1@ }@H_404_1@ if (sqlite3_step(stmt4) != sqlITE_DONE) {@H_404_1@ sqlite3_finalize(stmt4);@H_404_1@ sqlite3_close(conn);@H_404_1@ return;@H_404_1@ }@H_404_1@ printf("finish insert data ok\n");@H_404_1@ sqlite3_finalize(stmt4);@H_404_1@

@H_404_1@

@H_404_1@

5.取出数据

const char* selectsql = "SELECT data FROM basicpower"; //直接选择要查询的数据列 sqlite3_stmt* stmt3 = NULL; if (sqlite3_prepare_v2(conn,selectsql,strlen(selectsql),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;

猜你在找的Sqlite相关文章