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. UVa 10603 Fill (暴力BFS+优先队列)

    题意:给定4个数,a,b,c,d,分别代表空杯子容积为a,b,一个盛满水的杯子容积为c,让你不断倒水,找一个dd,是不是存在某个时刻, 某个杯子里的水dd,和d相同,或者无限接近.让求最少的倒水量和d ...

  2. 用word2016 写CSDN 博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  3. dojo学习(一)入门

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  4. Tomcat 系统架构与设计模式1

    从 Tomcat 如何分发请求.如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析 Tomcat 的工作原理,这也是一个 Web 服务器首要解决的关键问题 Tomcat 总体结构 To ...

  5. [leetcode] 9. Binary Tree Level Order Traversal

    跟第七题一样,把最后的输出顺序换一下就行... Given a binary tree, return the level order traversal of its nodes' values. ...

  6. Android-ImageUtils工具类

    图片相关的工具类 public class ImageUtils { public static boolean saveImage(Bitmap photo, String spath) { try ...

  7. MSP430G2553 Launchpad 硬件I2C驱动

    一.USCI I2C 驱动介绍 对于MSP430G2553,硬件I2C由外设USCI(Universal Serial Communication Interface)提供.USCI又分为USCI_A ...

  8. django drf JWT

    建议使用djangorestframework-jwt或者djangorestframework_simplejwt,文档为 https://github.com/GetBlimp/django-re ...

  9. Kafka与.net core(二)zookeeper

    1.zookeeper简单介绍 1.1作用 zookeeper的作用是存储kafka的服务器信息,topic信息,和cunsumer信息.如下图: 而zookeeper是个什么东西呢?简单来说就是一个 ...

  10. JS获取节点属性个数及值得方法

    var ex = node; ; for (var j in ex) { alert("" + myIndex + ".(<font color='blue'> ...