我该如何使用Sqlite" PRAGMA integrity_check"在C.

时间:2014-03-04 12:38:21

标签: c sqlite

我的数据库已损坏。在命令行中我输入了

PRAGMA integrity_check

和sqlite返回

On tree page 441 cell 17: Rowid 205 out of order (min less than parent max of 12258)
On tree page 26 cell 12: 2nd reference to page 441
On tree page 26 cell 12: Child page depth differs
On tree page 26 cell 13: Child page depth differs
Page 65 is never used
Page 66 is never used
wrong # of entries in index sqlite_autoindex_TBL_1

在我的c程序中输入了

sqlite3 *glbDBHandle;
sqlite3_open(DB_FILE, &glbDBHandle);
int result=sqlite3_exec(glbDBHandle, "PRAGMA integrity_check", 0, 0, 0);

此代码始终为0,其中包含破碎且健康的数据库。

我应该如何在C中使用“PRAGMA integrity_check”?或者我怎么知道我的sqlite数据库坏了?

1 个答案:

答案 0 :(得分:4)

PRAGMA integrity_check的行为类似于SELECT查询,它在单行中返回结果。 要使用sqlite3_exec读取结果,您需要使用回调。

请注意,PRAGMA integrity_check无法保证找到所有错误,因此您只能用它来检查损坏的数据库,而不是健康的数据库。