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

创建一个表格。

向表格中插入记录。

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

关闭数据库连接。

相关推荐
Mike117.3 小时前
GBase 8a 日期边界写法和时间窗口取数偏差
数据库
SPC的存折4 小时前
1、Redis数据库基础
linux·运维·服务器·数据库·redis·缓存
And_Ii8 小时前
LCR 168. 丑数
c++
MatrixOrigin8 小时前
数据库没有死,只是范式变了
数据库·oracle
CoderMeijun9 小时前
C++ 时间处理与格式化输出:从 Linux 时间函数到 Timestamp 封装
c++·printf·stringstream·时间处理·clock_gettime
羊小蜜.9 小时前
Mysql 13: 触发器全解——创建、查看、使用与注意事项
数据库·mysql·触发器
阿里加多10 小时前
第 1 章:Go 并发编程概述
java·开发语言·数据库·spring·golang
ShiJiuD66688899910 小时前
Mysql 进阶
数据库·mysql