Xamarin除了提供ADO.NET方式操作Sqlite外,
也提供了一個類似Entity Framework的SqliteNET,
可至官網提供的連結下載Source,
或點選這裡下載。
以下範例使用VS2012+Genymotion
首先新增一個Android 專案,將Sqlite.cs加入專案。
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb.png)
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_1.png)
Entity的部分就要自己建立了,建立出來的Entity同等於做出一個Table。
新加入一個類別叫TestData並給兩個屬性,DataID、DataVal。
在DataID上給予PrimaryKey,AutoIncrement兩個值,
表示指定該欄位為主鍵,並會自動產生Index值。
3 |
[PrimaryKey,AutoIncrement] |
4 |
public int DataID { get ; set ; } |
6 |
public string DataVal { get ; set ; } |
接著增加一個類別,做為對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() |
5 |
connString = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), DbName); |
CreateTable只有在Table不存在的時候才會執行建立Table的動作,
將要建立Table的型別放在後面的泛型參數就會自動產生Create語法。
1 |
public int CreateTable() |
3 |
using (var db = new SQLiteConnection(connString)) |
5 |
return db.CreateTable<TestData>(); |
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_2.png)
DropTable與CreateTable方式相同
3 |
using (var db = new SQLiteConnection(connString)) |
5 |
return db.DropTable<TestData>(); |
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_3.png)
InsertData直接給一個TestData類別就會Insert一筆資料,
如果有設定AutoIncrement,在資料新增完後會返回該值。
1 |
public int InsertData(TestData data) |
3 |
using (var db = new SQLiteConnection(connString)) |
5 |
return db.Insert(data); |
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_4.png)
GetData設計為傳入主鍵值進行查詢,
這裡設計成用.where來查詢,也可以用.Get<T>(PrimaryKey)來取得資料。
01 |
public TestData GetData( string pk) |
04 |
if ( int .TryParse(pk, out x)) |
06 |
using (var db = new SQLiteConnection(connString)) |
08 |
return db.Table<TestData>().Where(c => c.DataID == x).FirstOrDefault(); |
最後一個GetAllData,直接將.Table<T>() ToList()回傳
1 |
public List<TestData> GetAllData() |
3 |
using (var db = new SQLiteConnection(connString)) |
5 |
return db.Table<TestData>().ToList(); |
當有特殊需求需要下指令時,
他也提供了Execute和ExecuteScalar<T>兩種方式。
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_5.png)
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_6.png)
簡單拉個畫面測試看看
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_7.png)
新增一筆資料,新增完後取回返回的KEY值
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_9.png)
查詢所有資料
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_10.png)
查詢單一筆資料
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_11.png)
至於重建資料表就是把資料表Drop掉再Create而已~
另外資料表存放的位置,要root過才看到的。
Genymotion提供的都是root過的。
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_12.png)
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_13.png)
![](http://files.dotblogs.com.tw/steven0529/1309/Xamarin.AndroidSqliteNET_F597/image_thumb_15.png)
- [Xamarin.Android] 結合Windows Azure與Google cloud message 來實現Push Notification (转帖)
這一篇要討論如何使用Xamarin.Android 整合GCM以及Windows Azure來實作Android手機上的推播通知服務. 這篇文章比較著重概念的部分,在開始讀這篇之前,也可以先參考一下X ...
- [Xamarin.Android] 儲存資料於Windows Azure (转帖)
在準備討論Xamarin.Android 如何整合GCM與Windows Azure來實作Push Notification之前, 先來了解如何將Xamarin.Android 與Windows Az ...
- [Xamarin.Android]如何引用JAR檔案 (转帖)
這個範例是如何在Xamarin.Android中去使用一個我們自行在開發的JAR檔案. 主要會執行的步驟如下 1. 在Xamarin建立一個Android Java Bindings Library ...
- [Xamarin.Android] 如何使用Google Map V2 (转帖)
Google Map v1已經在2013年的3月開始停止支援了,目前若要在你的Android手機上使用到Google Map,就必須要使用 到Google Map v2的版本.在Xamarin要使用G ...
- Xamarin.Android中使用android:onClick="xxx"属性
原文:Xamarin.Android中使用android:onClick="xxx"属性 在原生Android开发中,为一个View增加点击事件,有三种方式: 1.使用匿名对象 ( ...
- Xamarin android使用Sqlite做本地存储数据库
android使用Sqlite做本地存储非常常见(打个比方就像是浏览器要做本地存储使用LocalStorage,貌似不是很恰当,大概就是这个意思). SQLite 是一个软件库,实现了自给自足的.无服 ...
- XAMARIN.ANDROID SIGNALR 实时消息接收发送示例
SignalR 是一个开发实时 Web 应用的 .NET 类库,使用 SignalR 可以很容易的构建基于 ASP.NET 的实时 Web 应用.SignalR 支持多种服务器和客户端,可以 Host ...
- XAMARIN ANDROID 二维码扫描示例
现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile 做一个简单的 Android 条码扫描示 ...
- 我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录
一.缘起 在自己给别家公司做兼职外包的时候,已经明确知道外包的活不是那么好干的,一般在经历了初期热血澎湃的激情后,逐渐冷淡,愤怒,再冷淡,再愤怒…,听上去好像高潮迭起,但令人尴尬的是,这高潮迭起我们都 ...
随机推荐
- Chrome Console API 参考
https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference
- IntelliJ IDEA 2017版开发SpringBoot之fastJsonHttpMessageConvert使用
继承WebMvcConfigurerAdapter,改写成自己的json转换工具的写法 1.建立实体类 package com.fastjson; import com.alibaba.fastjso ...
- UVa 10829 L-Gap Substrings (后缀数组+rmq)
题意:给定上一个串,问你多少种UVU这一种形式的串,其中U不为空并且V的长度给定了. 析:枚举 U 的长度L,那么U一定是经过 0 L 2L 3L .... 其中的一个,所以求两个长度反lcp,一个向 ...
- 凭借对KMP算法的了解,用java实现了一下,结果和java自带的字符串indexOf比,性能差了十倍。。。
public class KMP { private char[] source = {'a','b','c','b','c','a','b','a','b','d','d','e','f','g', ...
- ASP.NET系列:自定义配置节点的复用
appSettings太简单,为每个程序自定义配置节点太复杂,因此要解决app.config&web.config自定义配置的复用问题. 1.读取不依赖SectionName,根节点可以定义为 ...
- archlinux 64bit 开发android
arch 64位下直接运行android emulator会出现错误:“Failed to start emulator: Cannot run program "xxxx/sdk/tool ...
- asp.net 添加错误日志
在开发程序中,错误日志很有必要.今天就把使用到的添加错误日志,记录下来,方便以后查看 利用的asp.net错误处理机制 Application_Error 贴出代码 protected void Ap ...
- Asp.NetCore安全验证之JWT
本文只是介绍了下基于AspNetCore自带的System.IdentityModel.Tokens.Jwt.dll工具在项目中Token的应用. 我这里谈到的很浅显就两点: 一,超时时间 二,数据的 ...
- windows下简单验证码识别——完美验证码识别系统
此文已由作者徐迪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 讲到验证码识别,大家第一个可能想到tesseract.诚然,对于OCR而言,tesseract确实很强大,自带 ...
- JSOI2008 Blue Mary开公司 | 李超线段树学习笔记
题目链接:戳我 这相当于是一个李超线段树的模板qwqwq,题解就不多说了. 代码如下: #include<iostream> #include<cstdio> #include ...