C++之sqlite数据库读写

C++之sqlite数据库读写

常用函数

1、sqlite3_open()

用于打开SQLite数据库。该函数接受两个参数:数据库文件名和打开模式。成功打开数据库后,将返回一个sqlite3*对象。

2、sqlite3_close()

用于关闭SQLite数据库。该函数接受一个sqlite3*对象作为参数。

3、sqlite3_exec()

该函数用于执行SQL语句。它接受一个sqlite3*数据库,一个SQL语句字符串和一个回调函数。对于每个从SQL语句返回的记录,回调函数都会被调用。

4、sqlite3_prepare()

该函数用于准备要执行的SQL语句。该函数接受一个sqlite3*数据库,一个SQL语句字符串和一个回调函数。当SQL语句准备好执行时,回调函数会被调用。

5、sqlite3_step()

该函数用于执行已准备好的SQL语句。该函数接受一个sqlite3*数据库和一个已准备好的SQL语句。对于每个从SQL语句返回的记录,回调函数都会被调用。

6、sqlite3_finalize()

该函数用于销毁已准备好的SQL语句。该函数接受一个sqlite3*数据库和一个已准备好的SQL语句。

7、sqlite3_last_insert_rowid()

该函数返回最近一次成功的INSERT语句插入的行的ROWID。该函数接受一个sqlite3*数据库作为参数。

8、sqlite3_changes()

该函数返回自上次事务以来,被数据库中的UPDATE、INSERT和DELETE语句更改的行数。该函数接受一个sqlite3*数据库作为参数。

9、sqlite3_total_changes()

该函数返回自上次事务以来,被数据库中的UPDATE、INSERT和DELETE语句更改的行总数。该函数接受一个sqlite3*数据库作为参数。

10、sqlite3_interrupt()

该函数用于中止正在执行的SQLite操作。该函数接受一个sqlite3*数据库作为参数。

应用例程

cpp 复制代码
#include <stdio.h>  
#include <stdlib.h>  
#include <sqlite3.h>  
  
static int callback(void* NotUsed, int argc, char** argv, char** azColName) {  
  for(int i = 0; i < argc; i++) {  
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");  
  }  
  return 0;  
}  
  
int main(int argc, char* argv[]) {  
  sqlite3* db;  
  char* zErrMsg = 0;  
  int rc;  
    
  rc = sqlite3_open("test.db", &db);  
    
  if(rc) {  
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));  
    exit(0);  
  } else {  
    fprintf(stderr, "Opened database successfully\n");  
  }  
    
  char* sql = "CREATE TABLE Friends(Id INT, Name TEXT);";  
    
  rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);  
    
  if(rc != SQLITE_OK) {  
    fprintf(stderr, "SQL error: %s\n", zErrMsg);  
    sqlite3_free(zErrMsg);  
  } else {  
    fprintf(stderr, "Table created successfully\n");  
  }  
    
  sql = "INSERT INTO Friends(Id, Name) VALUES(1, 'Tom');";  
    
  rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);  
    
  if(rc != SQLITE_OK) {  
    fprintf(stderr, "SQL error: %s\n", zErrMsg);  
    sqlite3_free(zErrMsg);  
  } else {  
    fprintf(stderr, "Records inserted successfully\n");  
  }  
    
  sql = "SELECT * FROM Friends;";  
    
  rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);  
    
  if(rc != SQLITE_OK) {  
    fprintf(stderr, "SQL error: %s\n", zErrMsg);  
    sqlite3_free(zErrMsg);        
  } else {  
    fprintf(stderr, "Select operation performed successfully\n");  
  }  
    
  sqlite3_close(db);  
  return 0;  
}

这个例程演示了如何使用SQLite数据库的C API来执行以下操作:

打开一个SQLite数据库(如果数据库不存在,则创建一个新数据库)。

创建一个表格。

向表格中插入记录。

查询表格中的记录,并在控制台上显示每条记录的每个字段的值。

关闭数据库连接。

相关推荐
梁bk7 分钟前
Redis 数据结构(下)ZSet, Hash
数据库·redis·缓存
Elnaij9 分钟前
从C++开始的编程生活(14)——容器适配器——stack和queue
开发语言·c++
博语小屋13 分钟前
Linux线程
linux·c++·spring
☆光之梦☆15 分钟前
《openGauss全密态与防篡改账本数据库:云上数据安全与可信的新范式》
数据库·python
z***026016 分钟前
从 SQL 语句到数据库操作
数据库·sql·oracle
丁劲犇16 分钟前
MSYS2下使用libbacktrace为MINGW编译器Release模式导出崩溃堆栈
c++·msys2·mingw64·backtrace·crashdump·崩溃堆栈·跟踪堆栈
毕设十刻16 分钟前
基于Vue的企业管理系统pk6uy(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
FMRbpm17 分钟前
链表实现栈:具体函数实现
数据结构·c++·新手入门
@游子18 分钟前
SQL注入之高权限注入(三)
数据库·sql
Want59519 分钟前
C/C++跳动的爱心③
java·c语言·c++