標籤:
在可移植類庫 建立:
using SQLite.Net.Interop;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CommonLib{ /// <summary> /// 資料存放區環境 /// </summary> public interface IDataStorage { /// <summary> /// 儲存路徑 /// </summary> string StoragePath { get; } /// <summary> ///SQLite 平台環境 /// IOS: SQLite.Net.Platform.XamarinIOS.SQLitePlatformIOS /// Android: SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid ///... /// </summary> ISQLitePlatform SqlitePlatform { get; } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using SQLite.Net;namespace CommonLib{ /// <summary> /// SQLite上下文 /// </summary> public class SQLiteContext { public SQLiteContext() { } private IDataStorage _dataStorage; /// <summary> /// 構造上下文 /// </summary> /// <param name="dataStorage">資料存放區環境</param> public SQLiteContext(IDataStorage dataStorage) { _dataStorage = dataStorage; } /// <summary> /// SQLite上下文 /// </summary> protected SQLiteContext Connection { get { return this; } } /// <summary> /// 建立連結 /// </summary> /// <returns></returns> public SQLiteConnection New() { if (_dataStorage == null) throw new ArgumentException("SQLiteContext構造時缺少IDataStorage對象執行個體!"); return new SQLite.Net.SQLiteConnection(_dataStorage.SqlitePlatform, _dataStorage.StoragePath); } }}
在xamarin.Android 工程內建立 SQLiteStorage.cs
/// <summary> /// 資料存放區環境 /// </summary> public class SQLiteStorage : IDataStorage { /// <summary> /// 儲存路徑 /// </summary> public string StoragePath { get { // 擷取資料庫檔案儲存路徑 return System.IO.Path.Combine( System.Environment.GetFolderPath( System.Environment.SpecialFolder.Personal), "db.db"); } } /// <summary> /// SQLite 平台環境 /// Android: SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid /// IOS: SQLite.Net.Platform.XamarinIOS.SQLitePlatformIOS /// ... /// </summary> public SQLite.Net.Interop.ISQLitePlatform SqlitePlatform { get { return new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid(); } } }
使用例子:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using SQLite.Net;using CommonLib;namespace BusinessLib{ /// <summary> /// 涉及到操作SQLite時需要繼承 ZsCMS.CommonLib.SQLiteContext /// </summary> public class TestSqlte: SQLiteContext { /// <summary> /// /// </summary> /// <param name="dataStorage">資料存放區環境</param> public TestSqlte(IDataStorage dataStorage) : base(dataStorage)// 將UI層平台資訊傳入父類.建立當前平台的SQLite上下文 { } public void Insert(ZsCMS.ModelsLib.TestSqlte model) { // 通過父類Connection 建立資料連結 using (var conn= Connection.New()) { // 當表存在不會被建立,不存在表則建立 conn.CreateTable<ZsCMS.ModelsLib.TestSqlte>(); // 往表中添加資料 conn.Insert(model); } } public IEnumerable<ZsCMS.ModelsLib.TestSqlte> Gets() { using (var conn = Connection.New()) { // 查詢資料列表 return conn.Query<ZsCMS.ModelsLib.TestSqlte>("select * from TestSqlte"); } } }}
xamarin.Android SQLite儲存