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

创建一个表格。

向表格中插入记录。

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

关闭数据库连接。

相关推荐
xiaobai12 32 分钟前
二叉树的遍历【C++】
开发语言·c++·算法
hai4117419626 分钟前
mysql 与postgresql 的区别(gpt4)
数据库·mysql·postgresql
DieSnowK9 分钟前
[项目][WebServer][Makefile & Shell]详细讲解
开发语言·c++·http·makefile·shell·项目·webserver
知识分享小能手15 分钟前
mysql学习教程,从入门到精通,SQL 删除数据(DELETE 语句)(19)
大数据·开发语言·数据库·sql·学习·mysql·数据开发
白总Server30 分钟前
MongoDB解说
开发语言·数据库·后端·mongodb·golang·rust·php
冰镇毛衣36 分钟前
2.4 数据库表字段约束
数据库·sql·mysql
&木头人&43 分钟前
oracle select字段有子查询会每次执行子查询吗
数据库·oracle
冰镇毛衣43 分钟前
数据库简介
开发语言·数据库·sql·oracle
(⊙o⊙)~哦44 分钟前
oracle查询历史操作记录
数据库·oracle
无休居士1 小时前
【实践】应用访问Redis突然超时怎么处理?
数据库·redis·缓存