Sqlite数据库完整性检测

Posted uusystem

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sqlite数据库完整性检测相关的知识,希望对你有一定的参考价值。

/*************************************************************************************************
* 函数名称:  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;
}

  

以上是关于Sqlite数据库完整性检测的主要内容,如果未能解决你的问题,请参考以下文章

使用片段从数据库 SQLite 获取数据时出错

如何在片段中访问 SQLite 数据到 ListView

当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

如果我想从另一个片段中添加书签,为啥我的书签单词没有保存到 sqlite 数据库?