【发布时间】:2016-08-08 04:56:47
【问题描述】:
我们可以在 TForm 中使用验证,它工作得很好,但是现在我们必须从仅控制台应用程序验证/分析 SQLite 数据库。请分享在 XE7+ 中工作的任何详细示例。
这是一个功能
try
goodsqlitedb:=true;
//Check if Db is closed and not in use
if(FDSqliteQuery1.Active) then
begin
FDSqliteQuery1.Close;
updatelog('logfilename.txt', 'Closed Query');
end
else
updatelog('logfilename.txt', 'Query Already Closed');
FDSqliteConn.Close;
updatelog('logfilename.txt', 'Connection Closed');
//FDSqliteConn.Open;
FDPhysSQLiteDriverLink2:=TFDPhysSQLiteDriverLink.Create(nil);
FDSQLiteValidate2:=TFDSQLiteValidate.Create(nil);
FDPhysDriverService:=TFDPhysDriverService.Create(nil);
FDSQLiteSec2:=TFDSQLiteSecurity.Create(nil);
FDSQLiteSec2.DriverLink:=FDPhysSQLiteDriverLink2;
FDSQLiteValidate2.DriverLink:=FDPhysSQLiteDriverLink2;
//FDSQLiteValidate2.OnProgress(FDPhysDriverService,DBMessage);
with FDSQLiteValidate2 do
begin
updatelog('logfilename.txt', 'To Start the Validation');
Database := dbfile;
Analyze;
updatelog('logfilename.txt', 'Database To be Analyzed');
if not CheckOnly then
Result:='1' //Database has problems
else
Result:='0'; //Database is good
end;
except
on E: Exception do
begin
updatelog('logfilename.txt', 'Database Exception='+E.Message);
Result:='2'; //Database is Corrupt
goodsqlitedb := False;
//raise;
end;
end;
try
FDPhysSQLiteDriverLink2.Destroy;
FDSQLiteValidate2.Destroy;
FDPhysDriverService.Destroy;
FDSQLiteSec2.Destroy;
finally
updatelog('logfilename.txt', 'Drivers destroyed');
end;
【问题讨论】: