Для тех, кому нужно сделать это в C # с System.Data.SQLite, вы можете начать транзакцию, а затем сразу же откатить ее следующим образом: -
private bool DatabaseIsValid(string filename)
{
using (SQLiteConnection db = new SQLiteConnection(@"Data Source=" + filename + ";FailIfMissing=True;"))
{
try
{
db.Open();
using (var transaction = db.BeginTransaction())
{
transaction.Rollback();
}
}
catch (Exception ex)
{
log.Debug(ex.Message, ex);
return false;
}
}
return true;
}
Если файл не является действительной базой данныхвыдается следующее SQLiteException
- файл зашифрован или не является базой данных (System.Data.SQLite.SQLiteErrorCode.NotADb
).Если вы не используете зашифрованные базы данных, этого решения должно быть достаточно.(Для версии 1.0.81.0 System.Data.SQLite требовался только db.Open (), но когда я обновился до версии 1.0.91.0, мне пришлось вставить внутренний блок using, чтобы заставить его работать).