我在Xamarin Forms应用程序中使用SQLite。我已经获得了SqlLite连接路径的声明,如下所示
public class AnrodidSqlite { string GetPath()
{
try
{
var databaseName = "mydb";
var sqliteFilename = $"{databaseName}.db3";
var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var path = Path.Combine(documentsPath, sqliteFilename);
if (File.Exists(path))
{
File.Delete(path);
}
using (File.Create(path))
{
var connection= new SQLiteConnection(path);
connection.CreateTable<Location>();
}
return path;
}
catch (Exception ex)
{
throw;
}
}
public SQLiteAsyncConnection GetAsyncConnection()
{
var path = GetPath();
var conn = new SQLiteAsyncConnection(path,SQLiteOpenFlags.ReadWrite);
return conn;
}
}
在这里用dal层调用
public class LocationDal{ SQLiteAsyncConnection _database; public LocationDal(AnrodidSqlite sqlite ) { _database=sqlite.GetAsyncConnection();}
public async Task SaveLocation(SearchCriteria searchCriteria)
{
try
{
var originCity = searchCriteria.OriginCity;
await _database.InsertAsync(destinationCity);
} catch (SQLiteException ex)
{
throw;
}
catch (Exception ee)
{
}
}}
我得到的异常是来自Sqlite的Readonly异常。异常消息是 SQLite.SQLite3 + Result.ReadOnly