C语言操作 SQLITE3数据库函数

本文介绍了SQLite的几个关键函数,包括用于打开或创建数据库的sqlite3_open,关闭数据库的sqlite3_close,以及使用sqlite3_exec执行SQL并配备回调函数进行数据处理的方法。回调函数在查询时处理每一行数据,并提供了错误处理机制。
摘要由CSDN通过智能技术生成

一、打开数据库 函数

int    sqlite3_open(char *path,sqlite3 **db)

path    :    数据库文件的路径
db      :    指向sqlite句柄的指针
返回值  :成功返回 0,失败返回错误代码



//打开数据库文件,如果没有就创建,在数据库文件当中再创建表格,保存数据
  

二、数据库关闭 函数

int sqlite3_close(sqlite3 *db);

功能 : 关闭sqlite数据库
返回值 :成功返回0,失败返回错误代码


const char *sqlite3_errmg(sqlite3 *db);

返回值 : 返回错误信息

三、带回调函数的数据库操作函数(执行数据库命令的函数)

int sqlite3_exec(sqlite3 *db,const char *sql,sqlite3_callback callback,void *,char **errmsg);

功能:执行SQL操作
db : 数据库句柄
sql : SQL语句
callback : 回调函数(在查询数据的时候,每读取一行的数据就会调取一次回调函数,并把这一行的数据传给回调函数)
void *:传给回调函数的参数

errmsg : 错误信息的二级指针,传一个一级指针的地址进去,函数会让这个指针指向错误信息的起始地址


返回值 : 成功返回0,失败返回错误代码



Typedef int (*sqlite3_callback) (void *arg,int columns, char** value,char** name);


arg : 调用上一层函数是,要传给这个函数的数据

colums : 这一行数据一共有多少列

value ; 数据值(字符串形式)

name : 每个数据对应的列名字

c语⾔数据库查询系统,C语⾔实现sqlite3数据库查询的基本⽅ 法 sqlite回传函数相关 说了3种基本⽅法:callback,gettable和预处理stmt⽅法 下⾯给出测试代码和测试⽤数据库,代码如下 #include #include #include #include "sqlite3.h" // //typedef int (*sqlite3_callback)( // void* data, /* Data provided in the 4th argument of sqlite3_exec() */ // int ncols, /* The number of columns in row */ // char** values, /* An array of strings representing fields in the row */ // char** headers /* An array of strings representing column names */ //); int callback(void* data, int ncols, char** values, char** headers) { int i; int len =0; int ll=0; for(i=0; i < ncols; i++) { if(strlen(headers[i])>len) len = strlen(headers[i]); } for(i=0; i < ncols; i++) { ll = len-strlen(headers[i]); while(ll) { fprintf(stdout," "); --ll; } fprintf(stdout, "%s: %sn", headers[i], values[i]); } fprintf(stdout, "n"); return 0; } int search_by_callback(const char* db_name, const char* sql_cmd) { int i = 0 ; int j = 0 ; int nrow = 0, ncolumn = 0; char **azResult; //⼆维数组存放结果 sqlite3 *db=NULL; char *zErrMsg = 0; int rc; int len=0; if(access(db_name, 0) == -1) { fprintf(stderr, "%s not foundn", db_name); return -1; } rc = sqlite3_open(db_name, &db); if( rc != SQLITE_OK) { fprintf(stderr, "%s open failed: %sn", db_name,sqlite3_errmsg(db)); sqlite3_close(db); return -1; } //查询数据 rc = sqlite3_exec( db,sql_cmd, callback, NULL, &zErrMsg ); if( rc != SQLITE_OK) { fprintf(stderr, "%s %s: %sn", db_name,sql_cmd, sqlite3_errmsg(db)); if(zErrMsg) { fprintf(stderr,"ErrMsg = %s n", zErrMsg); sqlite3_free(zErrMsg); } sqlite3_close(db); return -1; } if(zErrMsg) { sqlite3_free(zErrMsg); } //关闭数据库 sqlite3_close(db); return 0; } int search_by_table(const char* db_name, const char* sql_cmd) { int i = 0 ; int j = 0 ; int nrow = 0, ncolumn = 0; char **azResult; //⼆维数组存放结果 sqlite3 *db=NULL; char *zErrMsg = 0; int rc; int len=0; if(access(db_name, 0) == -1) { fprintf(stderr, "%s not foundn", db_name); return -1; } rc = sqlite3_open(db_name, &db); if( rc != SQLITE_OK) { fprintf(stderr, "%s open failed: %sn"
要在C语言操作SQLite3数据库,需要安装SQLite3库并包含其头文件。然后,可以使用SQLite3提供的API来执行各种操作,例如打开/关闭数据库,执行SQL语句,获取结果等。 以下是一个简单的示例程序,演示了如何连接到数据库,创建表格并插入数据: ```c #include <stdio.h> #include <sqlite3.h> int main(int argc, char* argv[]) { sqlite3* db; char* errMsg = 0; int rc; rc = sqlite3_open("test.db", &db); if (rc != SQLITE_OK) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } else { fprintf(stdout, "Opened database successfully\n"); } char* sql = "CREATE TABLE COMPANY(" "ID INT PRIMARY KEY NOT NULL," "NAME TEXT NOT NULL," "AGE INT NOT NULL," "ADDRESS CHAR(50)," "SALARY REAL);"; rc = sqlite3_exec(db, sql, 0, 0, &errMsg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", errMsg); sqlite3_free(errMsg); sqlite3_close(db); return 1; } else { fprintf(stdout, "Table created successfully\n"); } sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " "VALUES (1, 'Paul', 32, 'California', 20000.00 ); " "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " "VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); " "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );" "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" "VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 );"; rc = sqlite3_exec(db, sql, 0, 0, &errMsg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", errMsg); sqlite3_free(errMsg); sqlite3_close(db); return 1; } else { fprintf(stdout, "Records created successfully\n"); } sqlite3_close(db); return 0; } ``` 此程序将创建一个名为“test.db”的数据库,并在其中创建一个名为“COMPANY”的表格,并插入一些数据。请注意,通过sqlite3_exec函数执行SQL语句,并使用sqlite3_errmsg函数检查错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值