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数据库(如果数据库不存在,则创建一个新数据库)。

创建一个表格。

向表格中插入记录。

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

关闭数据库连接。

相关推荐
码农小站16 分钟前
ClickHouse 时间范围查询:精准筛选「本月数据」
数据库
GiraKoo22 分钟前
【GiraKoo】 C++20的新特性
c++
无聊的小坏坏28 分钟前
力扣 239 题:滑动窗口最大值的两种高效解法
c++·算法·leetcode
黎明smaly31 分钟前
【排序】插入排序
c语言·开发语言·数据结构·c++·算法·排序算法
paopaokaka_luck43 分钟前
基于SpringBoot+Vue的非遗文化传承管理系统(websocket即时通讯、协同过滤算法、支付宝沙盒支付、可分享链接、功能量非常大)
java·数据库·vue.js·spring boot·后端·spring·小程序
小疯仔1 小时前
navicat导出数据库的表结构
数据库
TOSUN同星1 小时前
干货分享 | TSMaster DBC编辑器操作指南:功能详解+实战示例
数据库·oracle·编辑器·汽车·软件工程
CCF_NOI.1 小时前
(普及−)B3629 吃冰棍——二分/模拟
数据结构·c++·算法
huihui4502 小时前
一天一道Sql题(day01)
数据库
~尼卡~2 小时前
软考(软件设计师)数据库原理:事务管理,备份恢复,并发控制
数据库·软件设计师-软考