Xamarin除了提供ADO.NET方式操作Sqlite外,

也提供了一個類似Entity Framework的SqliteNET,

可至官網提供的連結下載Source

點選這裡下載

以下範例使用VS2012+Genymotion

首先新增一個Android 專案,將Sqlite.cs加入專案。

Entity的部分就要自己建立了,建立出來的Entity同等於做出一個Table。

新加入一個類別叫TestData並給兩個屬性,DataID、DataVal。

在DataID上給予PrimaryKey,AutoIncrement兩個值,

表示指定該欄位為主鍵,並會自動產生Index值。

1 public class TestData
2 {
3     [PrimaryKey,AutoIncrement]
4     public int DataID { getset; }
5  
6     public string DataVal { getset; }
7 }

接著增加一個類別,做為對TestData這個資料表的操作。類別名為TestDataRepository。

DB檔名取為Test.db。

建立CreateTable、DropTable、InsertData、GetData、GetAllData這幾個方法。

在物件的建構子中,設定連線字串,並且呼叫CreateTable方法。

1 private readonly string DbName = "Test.db";
2 private string connString;
3 public TestDataRepository()
4 {
5      connString = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), DbName);
6      CreateTable();
7 }

CreateTable只有在Table不存在的時候才會執行建立Table的動作,

將要建立Table的型別放在後面的泛型參數就會自動產生Create語法。

1 public int CreateTable()
2        {
3            using (var db = new SQLiteConnection(connString))
4            {
5               return db.CreateTable<TestData>();
6            }
7        }

DropTable與CreateTable方式相同

1 public int DropTable()
2 {
3     using (var db = new SQLiteConnection(connString))
4     {
5         return db.DropTable<TestData>();
6     }
7 }

InsertData直接給一個TestData類別就會Insert一筆資料,

如果有設定AutoIncrement,在資料新增完後會返回該值。

1 public int InsertData(TestData data)
2        {
3            using (var db = new SQLiteConnection(connString))
4            {
5                return db.Insert(data);
6            }
7        }

GetData設計為傳入主鍵值進行查詢,

這裡設計成用.where來查詢,也可以用.Get<T>(PrimaryKey)來取得資料。

01 public TestData GetData(string pk)
02 {
03     int x;
04     if (int.TryParse(pk, out x))
05     {
06         using (var db = new SQLiteConnection(connString))
07         {
08             return db.Table<TestData>().Where(c => c.DataID == x).FirstOrDefault();
09         }
10     }
11     return null;
12 }

最後一個GetAllData,直接將.Table<T>() ToList()回傳

1 public List<TestData> GetAllData()
2 {
3     using (var db = new SQLiteConnection(connString))
4     {
5         return db.Table<TestData>().ToList();
6     }
7 }

當有特殊需求需要下指令時,

他也提供了Execute和ExecuteScalar<T>兩種方式。

簡單拉個畫面測試看看

新增一筆資料,新增完後取回返回的KEY值

查詢所有資料

查詢單一筆資料

至於重建資料表就是把資料表Drop掉再Create而已~

另外資料表存放的位置,要root過才看到的。

Genymotion提供的都是root過的。

 

[Xamarin.Android]使用SqliteNET (转帖)的更多相关文章

  1. [Xamarin.Android] 結合Windows Azure與Google cloud message 來實現Push Notification (转帖)

    這一篇要討論如何使用Xamarin.Android 整合GCM以及Windows Azure來實作Android手機上的推播通知服務. 這篇文章比較著重概念的部分,在開始讀這篇之前,也可以先參考一下X ...

  2. [Xamarin.Android] 儲存資料於Windows Azure (转帖)

    在準備討論Xamarin.Android 如何整合GCM與Windows Azure來實作Push Notification之前, 先來了解如何將Xamarin.Android 與Windows Az ...

  3. [Xamarin.Android]如何引用JAR檔案 (转帖)

    這個範例是如何在Xamarin.Android中去使用一個我們自行在開發的JAR檔案. 主要會執行的步驟如下 1. 在Xamarin建立一個Android Java Bindings Library ...

  4. [Xamarin.Android] 如何使用Google Map V2 (转帖)

    Google Map v1已經在2013年的3月開始停止支援了,目前若要在你的Android手機上使用到Google Map,就必須要使用 到Google Map v2的版本.在Xamarin要使用G ...

  5. Xamarin.Android中使用android:onClick="xxx"属性

    原文:Xamarin.Android中使用android:onClick="xxx"属性 在原生Android开发中,为一个View增加点击事件,有三种方式: 1.使用匿名对象 ( ...

  6. Xamarin android使用Sqlite做本地存储数据库

    android使用Sqlite做本地存储非常常见(打个比方就像是浏览器要做本地存储使用LocalStorage,貌似不是很恰当,大概就是这个意思). SQLite 是一个软件库,实现了自给自足的.无服 ...

  7. XAMARIN.ANDROID SIGNALR 实时消息接收发送示例

    SignalR 是一个开发实时 Web 应用的 .NET 类库,使用 SignalR 可以很容易的构建基于 ASP.NET 的实时 Web 应用.SignalR 支持多种服务器和客户端,可以 Host ...

  8. XAMARIN ANDROID 二维码扫描示例

    现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile  做一个简单的 Android 条码扫描示 ...

  9. 我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录

    一.缘起 在自己给别家公司做兼职外包的时候,已经明确知道外包的活不是那么好干的,一般在经历了初期热血澎湃的激情后,逐渐冷淡,愤怒,再冷淡,再愤怒…,听上去好像高潮迭起,但令人尴尬的是,这高潮迭起我们都 ...

随机推荐

  1. Chrome Console API 参考

    https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference

  2. IntelliJ IDEA 2017版开发SpringBoot之fastJsonHttpMessageConvert使用

    继承WebMvcConfigurerAdapter,改写成自己的json转换工具的写法 1.建立实体类 package com.fastjson; import com.alibaba.fastjso ...

  3. UVa 10829 L-Gap Substrings (后缀数组+rmq)

    题意:给定上一个串,问你多少种UVU这一种形式的串,其中U不为空并且V的长度给定了. 析:枚举 U 的长度L,那么U一定是经过 0 L 2L 3L .... 其中的一个,所以求两个长度反lcp,一个向 ...

  4. 凭借对KMP算法的了解,用java实现了一下,结果和java自带的字符串indexOf比,性能差了十倍。。。

    public class KMP { private char[] source = {'a','b','c','b','c','a','b','a','b','d','d','e','f','g', ...

  5. ASP.NET系列:自定义配置节点的复用

    appSettings太简单,为每个程序自定义配置节点太复杂,因此要解决app.config&web.config自定义配置的复用问题. 1.读取不依赖SectionName,根节点可以定义为 ...

  6. archlinux 64bit 开发android

    arch 64位下直接运行android emulator会出现错误:“Failed to start emulator: Cannot run program "xxxx/sdk/tool ...

  7. asp.net 添加错误日志

    在开发程序中,错误日志很有必要.今天就把使用到的添加错误日志,记录下来,方便以后查看 利用的asp.net错误处理机制 Application_Error 贴出代码 protected void Ap ...

  8. Asp.NetCore安全验证之JWT

    本文只是介绍了下基于AspNetCore自带的System.IdentityModel.Tokens.Jwt.dll工具在项目中Token的应用. 我这里谈到的很浅显就两点: 一,超时时间 二,数据的 ...

  9. windows下简单验证码识别——完美验证码识别系统

    此文已由作者徐迪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 讲到验证码识别,大家第一个可能想到tesseract.诚然,对于OCR而言,tesseract确实很强大,自带 ...

  10. JSOI2008 Blue Mary开公司 | 李超线段树学习笔记

    题目链接:戳我 这相当于是一个李超线段树的模板qwqwq,题解就不多说了. 代码如下: #include<iostream> #include<cstdio> #include ...