Sqlite数据库完整性检测

摘要:
/**************************************************************************************************函数名称:IntegrityCheck*功能描述:数据库完整性检测*输入参数:无*输出参数:无*返回值:0:完整/1:损坏*其它说明:*修改日期版本号修改人修改内容*------------------
/*************************************************************************************************
* 函数名称:  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;
}
更多内容请访问 www.uusystem.com

免责声明:文章转载自《Sqlite数据库完整性检测》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】excel音标乱码CVE2016-8863libupnp缓冲区溢出漏洞原理分析及Poc下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Qt之操作数据库(SQLite)

SQLite 简介 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还...

oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统、oracle11g数据库 问题描述:在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错。错误提示内容如下。...

nextcloud nginx搭建完后(初始化数据库后)登录不了

nextcloud搭建完初始化数据库(mysql8.0)后,输入用户名、密码后登录不了、登录没反应(还是跳转当前登录页面)呈现如下: 原因是web、php nginx 和  ../php/session/ 不是同一个用户 这里的../php/session是php在你当前系统安装的位置,很多博客、论坛也说明了问题,但是给的session的位置不一定对,如下...

【mysql】 数据库字符集和排序规则

库的字符集影响表和字段的字符集 数据库字符集 》表的字符集 》 字段的字符集 (从前往后优先级由低到高,从左往右继承,如果表没设置字符集,继承数据库的,如果字段没设置,继承表的) 数据库的字符集如果是utf8,表和字段的字符集继承 字段的字符集和排序规则继承自表,例如表的字符集为latin1,那表的字段(字符型)都是latin1 修改表的字符集对新增加字...

Echart 动态生成series数据

要做成页面只传入数据,js生成图表,如下图 下面是js代码 var LineChart = function (ID, title, axisData,seriesData) { var myChart = echarts.init(document.getElementById(ID)); var newData = [];...

MySQL高可用集群方案

一、Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案。 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+Heartbeat) 方案三:主从复制架构 主从复制(一主多从) MMM架构(双主多从) MHA架构(多主多从) 方案四:数据库高可用架构 这种方式比较经典的...