首页 > 数据库 >检测sqlite3数据库的完整性

检测sqlite3数据库的完整性

时间:2023-01-31 14:12:49浏览次数:44  
标签:SQLITE const 数据库 db 完整性 sqlite3 integrity

 1 /** 
 2  * @integrityCheck
 3  * @brief 检查数据库的完整性
 4  *
 5  * @param dbPath 数据库的路径
 6  * @返回值 0:完整; -1 损坏
 7  */
 8 int integrityCheck(const char *dbPath)
 9 {
10     int ret = -1;
11     sqlite3_stmt *integrity = NULL;
12     sqlite3 *db;
13     /*打开数据库*/
14     if (sqlite3_open(dbPath, &db) != SQLITE_OK)
15     {
16         logPrintf(LOG_LIB_ERROR, "Open database %s failed!\n", dbPath);
17         return ret;
18     }
19  
20     // integrity_check检查包括:乱序的记录、缺页、错误的记录、丢失的索引、唯一性约束、非空约束
21     //if ( sqlite3_prepare_v2( obj_db, "PRAGMA integrity_check;", -1, &integrity, NULL ) == SQLITE_OK )
22     //quick_check不检查约束条件,耗时较短
23     if ( sqlite3_prepare_v2(db, "PRAGMA quick_check;", -1, &integrity, NULL) == SQLITE_OK ) 
24     {
25         while (sqlite3_step(integrity) == SQLITE_ROW)
26         {
27             const unsigned char *result = sqlite3_column_text(integrity, 0);
28             if (result && strcmp((const char *)result, (const char *)"ok") == 0)
29             {
30                 ret = 0;
31                 break;
32             }
33         }
34  
35         sqlite3_finalize(integrity);
36     }
37  
38     /*关闭数据库*/
39     sqlite3_close(db);
40  
41     return ret;
42 }

 

标签:SQLITE,const,数据库,db,完整性,sqlite3,integrity
From: https://www.cnblogs.com/dhhu007/p/17078771.html

相关文章

  • 区块链leveldb数据库安装
    一、首先,需要在电脑上安装boost库。下载地址在这里,下载压缩包之后解压,Indexofmain/release/1.79.0/source。解压完成后在解压好的文件夹里面进入cmd,之后运行bootstrip.......
  • 快速使用时序数据库InfluxDB
    快速使用时序数据库InfluxDBInfluxDB是一款优秀的时间序列数据库,适合存储设备性能、日志、物联网传感器等带时间戳的数据。1. InfluxDB主要特性InfluxDB也就是TSDB,是......
  • PostgreSQL学习笔记-1.基础知识:创建、删除数据库和表格
    PostgreSQL创建数据库PostgreSQL创建数据库可以用以下三种方式:1、使用CREATEDATABASESQL语句来创建。2、使用createdb命令来创建。3、使用pgAdmin工具。例如,我......
  • [etcd]基本数据库操作
    前言etcd数据库操作基本围绕着对键值和目录的CRUD操作,以及生命周期的管理。之前在单节点部署了三实例集群,而etcdctl默认找的是127.0.0.1:2379,所以这里先声明一个临时全局......
  • 使用 Python 操作 Mongo 数据库
    1.简介MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,它支持的......
  • 17.1 SQL Server数据库邮件
    SQLServer数据库邮件目录SQLServer数据库邮件简介配置SQLServer数据库邮件使用数据库邮件发送邮件1)发送邮件示例2)发送带有查询结果的电子邮件简介数据库电子邮件可以......
  • 宝塔部署 宝塔远程连接数据库出现1045问题
    宝塔远程连接数据库出现1045问题宝塔面板在安装好mysql后本地navicat远程连接的时候报错1045这个问题是数据库权限问题在宝塔面板页面找到软件商店—已安装—mysql—......
  • zodb,一个python对象数据库
    1.什么是对象数据库关系型数据库,是指采用了关系模型来组织数据的数据库,以行和列的形式存储数据库,典型如mysql。NoSQL数据库,是指非关系型数据库,典型如mongodb。对象数据库,是......
  • python web框架多进程部署下数据库连接问题
    python常用的web框架,诸如flask,django,在生产部署时,都会选择多进程的部署方式,选用的中间件多为uwsgi或者gunicorn。如果项目里使用了数据库,那么就要考虑数据库连接在多进程下......
  • [转]常用数据库常见用法对比
    SCOPE_IDENTITY 和 @@IDENTITY 的作用都是取得返回在当前会话中的任何表内所生成的最后一个标识值,平时一般使用SCOPE_IDENTITY 参考:https://www.cnblogs.com/a......