Целевые платформы: Android API 34, iOS 17+< /li>
< /ul>
Что работает: < /p>
База данных (CRUD) Работайте отлично во время сеанса приложения < /li>
Разрешения на файлы являются правильными (проверяется с помощью файла Explorer на Android) < /li>
Файл базы данных существует и имеет ожидаемый размер (~ 140 КБ с данными) < /li>
< /ul>
. повторное открытие, файл базы данных исчез < /li>
Сообщения об ошибках или исключения < /li>
каталог все еще не существует, но файл .db3 удален. Закройте с ним-если вы не можете открыть его? 1.9.172 < /li>
< /ul>
githuh минимальный репродукция repo < /p>
Код проекта: < /p>
Код: Выделить всё
public static async Task InitializeAsync()
{
if (_connection != null) return;
await _semaphore.WaitAsync();
try
{
if (_connection != null)
return; // Double-check after acquiring lock
string dbPath = Path.Combine(FileSystem.AppDataDirectory, "BetterSQLite.db3");
//// Delete the database file if it exists (uncomment to enable)
//if (File.Exists(dbPath))
// File.Delete(dbPath);
_connection = new SQLiteAsyncConnection(dbPath);
// Create the tables if they don't exist
await _connection.CreateTablesAsync();
_logger?.LogInformation("SQLite database initialized successfully at {DbPath}", dbPath);
}
catch (Exception ex)
{
_logger?.LogError(ex, "Failed to initialize SQLite database");
throw new InvalidOperationException("Failed to initialize database", ex);
}
finally
{
_semaphore.Release();
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... lease-mode
Мобильная версия