返回介绍

1 C

2 C++

3 Windows

4 Linux

5 数据库

6 数据结构

7 算法

8 Qt

9 AS400

10 Web

12 C

13 框架

14 协议

15 工具

17 QA

5.5.1 Sqlite 数据库完整性检测

发布于 2023-10-02 20:38:17 字数 2372 浏览 0 评论 0 收藏 0

/*************************************************************************************************
* 函数名称:  IntegrityCheck
* 功能描述:  数据库完整性检测
* 输入参数:  无
* 输出参数:  无
* 返 回 值:  0:完整 / 1:损坏
* 其它说明:
* 修改日期 版本号 修改人 修改内容
* -----------------------------------------------
*
**************************************************************************************************/
#define     DB_OK                   0   /* 完整 */
#define     DB_ERROR                1   /* 损坏 */

sqlite3 *obj_db;
char g_objfile[255] = "DB.db3";

int IntegrityCheck(void)
{
    /*打开数据库*/
    sqlite3_open( g_objfile, &obj_db );

    BOOL integrityVerified = DB_ERROR;
    sqlite3_stmt *integrity = NULL;

    // integrity_check检查包括:乱序的记录、缺页、错误的记录、丢失的索引、唯一性约束、非空约束
    //if ( sqlite3_prepare_v2( obj_db, "PRAGMA integrity_check;", -1, &integrity, NULL ) == SQLITE_OK )
    //quick_check不检查约束条件,耗时较短
    if ( sqlite3_prepare_v2( obj_db, "PRAGMA quick_check;", -1, &integrity, NULL ) == SQLITE_OK ) 
    {
        while ( sqlite3_step( integrity ) == SQLITE_ROW )
        {
            const unsigned char *result = sqlite3_column_text( integrity, 0 );
            if ( result && strcmp( ( const char * )result, (const char *)"ok" ) == 0 )
            {
                integrityVerified = DB_OK;
                break;
            }
        }

        sqlite3_finalize( integrity );
    }

    /*关闭数据库*/
    sqlite3_close( obj_db );

    return integrityVerified;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文