我有一个Windows CE 5的应用程序,它使用Ado.net来备份/恢复我做简单复制的数据库。
在从备份恢复数据库之前,我使用SqlCeEngine
验证数据库是否正常,如果没有则修复它。这工作正常但是当我几次恢复大型数据库后,我得到验证方法返回false并且修复函数抛出异常
无法加载sqlcecompact30.dll。操作已中止。
现在,对于我要恢复的每个数据库文件都会发生这种情况,直到我退出应用程序。
无法找到原因,如果我删除测试并修复一切正常,数据库正常,但我想在恢复之前检查数据库是否已损坏。
我使用以下CAB文件在PDA(iPAQ 310)上安装SQL。
sqlce30.repl.ppc.wce5.armv4i.CAB
Visual Studio 2005
这是验证和修复的代码:
private static SqlCeEngine CreateEngine(string DBFileName)
{
return new SqlCeEngine("Data Source = '" + DBFileName + "'");
}
static public bool CheckDB(string DBFileName)
{
SqlCeEngine engine = null;
try
{
FileInfo file = new FileInfo(DBFileName);
if (file.Exists)
{
engine = CreateEngine(DBFileName);
return engine.Verify();
}
}
catch
{
}
finally
{
if (engine != null)
{
engine.Dispose();
}
}
return false;
}
static public bool RepairDB(string DBFileName)
{
SqlCeEngine engine = null;
try
{
FileInfo file = new FileInfo(DBFileName);
if (file.Exists)
{
engine = CreateEngine(DBFileName);
engine.Repair(null, RepairOption.RecoverCorruptedRows);
return engine.Verify();
}
}
catch (Exception ex)
{
Ness300Logger.Logger.Log("Repair failed: " + ex.Message);
}
finally
{
if (engine != null)
{
engine.Dispose();
}
}
return false;
}