有没有办法从代码中收缩数据库?我在我的数据库中发现一些表已损坏:如何从代码中检测到并修复它?
当我尝试使用Execute
更新特定表格中的记录时,我始终收到Corrupt
错误。
表的定义是
[Table("tbl_Colour")]
public class Colour : BaseTableListing {
}
public class BaseTableListing : ITableEntity
{
[PrimaryKey, AutoIncrement]
[Indexed]
public int Id { get; set; } = 0;
public string CreatedBy { get; set; } = "";
public DateTime CreatedDate { get; set; } = DateTime.Now;
// more fields
// ...
}
查询
UPDATE tbl_Colour SET IsUpdated = 0,
SynchronizeDate=CAST((((JulianDay('2017-04-04 09:22:12', 'localtime')
- 2440587.5)*86400.0) + 62135596800) * 10000000 AS BIGINT)
WHERE ID = 57;
提前谢谢。
答案 0 :(得分:0)
收缩sqlite文件的命令是 VACUUM : https://sqlite.org/lang_vacuum.html
重建文件,也许它可以解决你的问题。
答案 1 :(得分:0)
我的解决方案是database
,如果您的解决方案或项目中的数据库是
/// <summary>
/// Compacts the database.
/// </summary>
public void CompactDatabase()
{
try
{
SQLiteCommand cmd = database.CreateCommand("vacuum");
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Debug.WriteLine("CompactDatabase has an error: " + ex.Message);
// if you use MobileCenter
Analytics.TrackEvent("CompactDb Error", new Dictionary<string, string> {
{ "Message", ex.Message },
{ "Source", ex.Source },
{ "StackTrace", ex.StackTrace.ToString() }
});
}
}