5.5.1 Sqlite数据库完整性检测

  1. /*************************************************************************************************
  2. * 函数名称: IntegrityCheck
  3. * 功能描述: 数据库完整性检测
  4. * 输入参数: 无
  5. * 输出参数: 无
  6. * 返 回 值: 0:完整 / 1:损坏
  7. * 其它说明:
  8. * 修改日期 版本号 修改人 修改内容
  9. * -----------------------------------------------
  10. *
  11. **************************************************************************************************/
  12. #define DB_OK 0 /* 完整 */
  13. #define DB_ERROR 1 /* 损坏 */
  14. sqlite3 *obj_db;
  15. char g_objfile[255] = "DB.db3";
  16. int IntegrityCheck(void)
  17. {
  18. /*打开数据库*/
  19. sqlite3_open( g_objfile, &obj_db );
  20. BOOL integrityVerified = DB_ERROR;
  21. sqlite3_stmt *integrity = NULL;
  22. // integrity_check检查包括:乱序的记录、缺页、错误的记录、丢失的索引、唯一性约束、非空约束
  23. //if ( sqlite3_prepare_v2( obj_db, "PRAGMA integrity_check;", -1, &integrity, NULL ) == SQLITE_OK )
  24. //quick_check不检查约束条件,耗时较短
  25. if ( sqlite3_prepare_v2( obj_db, "PRAGMA quick_check;", -1, &integrity, NULL ) == SQLITE_OK )
  26. {
  27. while ( sqlite3_step( integrity ) == SQLITE_ROW )
  28. {
  29. const unsigned char *result = sqlite3_column_text( integrity, 0 );
  30. if ( result && strcmp( ( const char * )result, (const char *)"ok" ) == 0 )
  31. {
  32. integrityVerified = DB_OK;
  33. break;
  34. }
  35. }
  36. sqlite3_finalize( integrity );
  37. }
  38. /*关闭数据库*/
  39. sqlite3_close( obj_db );
  40. return integrityVerified;
  41. }

打赏

微信支付 支付宝支付

License

本作品由Simonhttp://www.uusystem.com)创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 欢迎转载,但任何转载必须保留完整文章,在显要地方显示此声明以及原文链接。如您有任何疑问或者授权方面的协商,请邮件:postmaster@uusystem.com。