Xamarin.Forms<五> Android的本地数据库SQLite

1、准备工作:
在项目的“管理NuGet程序包”中安装“SQLite.Net PCL”和“SQLite.Net PCL - XamarinAndroid Platform”
在引用中“添加引用”添加SQLite.Net.dll以及SQLite.Net.Platform.XamarinAndroid.dll。

2、在Common项目的Tables文件夹下创建映射类(SQLite表),这个类的结构完全是对应到SQLite数据库中的表。
创建一个名为t_Custom表

 1 public class t_Custom
 2     {
 3         /// <summary>
 4         ///id
 5         /// </summary>
 6         [PrimaryKey, AutoIncrement]
 7         public int Id{ get; set; }
 8
 9         /// <summary>
10         ///客户名称
11         /// </summary>
12         public string CustomName { get; set; }
13     }

[PrimaryKey]:表示该表的主键,只能用于Int类型的属性。

[AutoIncrement]:用于需要自增的属性,每插入一条新数据该字段都会自增,只能用于Int类型。

[Column(name)]:用来表示指定属性对应到表中字段的名称,如果不加该属性则表中的字段名与属性名相同。

[Table(name)]:用来表示指定类对应到数据库中的表名称,如果不加该属性则数据库中的表名称与该类名称相同。

[MaxLength(value)]:用来限制字段能够保存的最长字符长度。

[Ignore]:表示忽略该属性,从而不会在表中生成对应的字段。

[Unique]:表示该属性的值必须在表中唯一。

3、打开SQLite数据库
需要在android项目下建立一个SQLite的类,名为SQLite_Android
编写对SQLite的联系方法:GetConnection();
打开该数据库。如果不存在该数据库,则会自动创建该文件。在为止我们仅仅创建了一个空的数据库,里面还不存在任何表。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using Xamarin.Forms;
 6 using System.IO;
 7 using Test.Mobile.Common;
 8 using SQLite.Net;
 9 using Test.Mobile.Droid;
10
11 [assembly: Dependency(typeof(SQLite_Android))]
12
13 namespace Autoloan.Mobile.Droid
14 {
15     public class SQLite_Android : ISQLite
16     {
17         public SQLite_Android()
18         {
19         }
20
21         /// <summary>
22         /// 连接SQLite
23         /// </summary>
24         /// <returns></returns>
25         public SQLite.Net.SQLiteConnection GetConnection()
26         {
27             try
28             {
29                 //SQLite文件的名称
30                 var sqliteFilename = "TodoSQLite.db3";
31                 //将SQLite保存在自定义的文件夹下,文件夹不存在则新建
32                 string documentsPath = System.Environment.GetFolderPath
33
34 (System.Environment.SpecialFolder.Personal);
35                 var path = Path.Combine(documentsPath, sqliteFilename);
36                 var plat = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
37                 var conn = new SQLite.Net.SQLiteConnection(plat, path);
38
39                 // Return the database connection
40                 return conn;
41             }
42             catch(Exception ex)
43             {
44             }
45         }
46     }
47 }

在命名空间Test.Mobile.Common下的ISQLite接口

1 namespace Test.Mobile.Common
2 {
3     public interface ISQLite
4     {
5         SQLiteConnection GetConnection();
6     }
7 }

4、表的操作
创建表

db.CreateTable<Custom>();
或者下面这个方式也一样可以:
db.CreateTable(typeof(Custom));

 1         /// <summary>
 2         /// 创建sqlite数据库相关表
 3         /// </summary>
 4         /// <param></param>
 5         /// <returns></returns>
 6         public bool CreateDBTables()
 7         {
 8             try
 9             {
10                 using (SQLiteConnectiondb = new SQLiteConnection())
11                 {
12                     db.CreateTable<t_Custom>();
13                 }
14                 return true;
15             }
16             catch (Exception ex)
17             {
18                 return false;
19             }
20         }

注:实际运用中一定会有人想找如何判断该表是否已经创建的方法,其实没有必须要找,即使重复的执行该操作,也不会影响什么,表一旦创建之后再执行就不会重新创建了。

5、数据的操作
插入数据

 1         /// <summary>
 2         /// 新增客户
 3         /// </summary>
 4         /// <returns></returns>
 5         public bool AddCustom(t_Custom _custom)
 6         {
 7             try
 8             {
 9                 using (SQLiteConnectiondb = new SQLiteConnection())
10                 {
11                     db.RunInTransaction(() =>
12                     {
13                         //添加客户
14                         db.Insert<t_Custom>(_custom);
15                     });
16                 }
17                 return true;
18             }
19             catch (Exception ex)
20             {
21                 return false;
22             }
23         }    

获得数据

 1         /// <summary>
 2         /// 查询客户
 3         /// </summary>
 4         /// <returns></returns>
 5         public t_Custom GetCustom(int _customId)
 6         {
 7             try
 8             {
 9                 using (SQLiteConnection db = new SQLiteConnection())
10                 {
11                        var q = db.Get<t_Custom>(x=>x.Id == _customId).FirstOrDefault();
12                        return q;
13                 }
14             }
15             catch (Exception ex)
16             {
17                 return false;
18             }
19         }        

更新数据

 1         /// <summary>
 2         /// 跟新客户
 3         /// </summary>
 4         /// <returns></returns>
 5         public bool UpdateCustom(t_Custom _custom)
 6         {
 7             try
 8             {
 9                 using (SQLiteConnection db = new SQLiteConnection())
10                 {
11                        var q = db.Get<t_Custom>(x=>x.Id == _custom.Id).FirstOrDefault();
12                         q.CustomName = _custom.CustomName;
13                        db.Update<t_Custom>(q);
14                        return true;
15                 }
16             }
17             catch (Exception ex)
18             {
19                 return false;
20             }
21         }
22
23
24         

删除数据

1 db.Delete<t_Custom>(_custom.Id);

一下是几个不错的文章,可以参考

Y-Z-F的一篇关于SQLite的文章

http://www.cnblogs.com/yaozhenfa/p/xamarin_android_sqlite_net_orm.html

Xamarin.Forms的SQLite网址
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/databases/#Adding_SQLite_to_WinPhone

SQLite 系统升级,数据库数据存在
http://blog.csdn.net/lucky_liuxiang/article/details/38656769

Android五中存储方式
http://www.cnblogs.com/hanyonglu/archive/2012/03/01/2374894.html

时间: 2024-08-01 10:41:10

Xamarin.Forms<五> Android的本地数据库SQLite的相关文章

android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色

前言:因为找了N多网上的资源都没有好的解决方案,别人都是只给思路没给具体源码,真TMD纠结,干嘛求别人,自己动手才是真,最痛恨那些所谓大牛的作风,给了点点代码就让别人去想,你让我们这种小白情何于堪!!!!!!此例是基于listview来实现本地sqlite实现的! 二话不说,程序猿求的是有图有真相有源码!大家下载后有什么问题可以找到本人:QQ508181017 核心代码如下 1.数据库操作类 package com.icq.demo.db; import java.util.ArrayList;

从零开始学Xamarin.Forms(三) Android 制作启动画面

Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1.将启动画面的图片命名为:splash_screen.png,并拷贝到 Resources 文件夹下的相应 Drawable 文件夹中: 2.在其中的 Drawable 文件夹下创建 splashscreen.xml ,内容为: <?xml version="1.0" encoding="utf-8" ?> <bitmap xmlns:android="h

从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)

 1.安装对应dll Update-Package Xamarin.Forms 选中Android项目及PCL项目:Install-Package Xamarin.Forms.Labs 2.设置系统相关信息,右键android项目-属性 3.设置应用的名称 4.在MainActivity设置IOC 添加变量:private static bool _initialized; 修改MainActivity集成自:XFormsApplicationDroid 添加方法: private void

Xamarin.Forms教程Android SDK工具下载安装

Xamarin.Form的Android SDK工具下载安装 本节将讲解如何下载Xamarin.Form的Android SDK工具,并使用其中的工具管理Android SDK,如何创建模拟器等内容. Xamarin.Form下载Android SDK 下载Android SDK具体的步骤如下. (1)打开浏览器,在地址栏中输入Android SDK官网地址http://developer.android.com/sdk/installing/ index.html,打开官网首页. (2)选项D

Android 学习心得(2)——Android内置数据库SQLite

一.简介: Android有一个内置数据库SQLite,它是一种轻型数据库,它有五种数据类型:NULL(空型).BLOB(二进制).INTEGER(整型).REAL(浮点型).TEXT(字符串文本),虽然有着五种数据之分,但是在内部SQLite存储数据是无类型的,也就是说你可以在integer中存入char数据之类的.  二.要点: INTEGER PRIMARY KEY中只能存放64位整数 在编写CREATE TABLE时候可以省略字段后面的数据类型 SQLite中可以解析大部分标准SQL语句

Android开发之数据库Sqlite

在Android中使用的数据库是开源数据库Sqlite数据库,下面主要详细的介绍Sqlite的使用: 一 SQLite简介 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软件时创建出应用使用到的数据库表结构及添加一些初始化记录,另外在软件升级的时候,也需要对数据表结构进行更新.那么,我们如何才能实现在用户初次使用或升级软件时自动在用户的手机上创建出应用需要的数据库表呢?总不能让我们在每个需

Xamarin.Forms&lt;四&gt; Android登录闪图

Xamarin.Forms Android闪图(适用于纯Android系统) 1.在Android.Resources.Drawable下添加好闪图的图片,命名为splashPicture. 2.在Android.Resources.Drawable新建一个splashscreen.xml的文件. 1 <?xml version="1.0" encoding="utf-8" ?> 2 <bitmap xmlns:android="http

QT 创建本地数据库(SQLite数据库)存储数据

注意:QT自带SQLITE数据库,不需要再安装 1.创建一个包含创建.查询.修改和删除数据库的数据库类(DataBase) DataBase.h头文件 #pragma once #include <QObject> #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> #include <QtSql/QSqlDriver> #include <QtSql/QSqlError> #incl

android 本地数据库sqlite的封装

单机android   sqlite数据库的实现,这个数据库可与程序一起生成在安装包中 一.下载sqlite3.exe文件 二.运行 cmd 转到sqlite3.exe 所在目录  运行 sqlite3.exe 数据库名.db     然后会出现sqlite>的命令提示符 输入创建表的语句, create table 表名('列','列'...):(注意: 要在结束部分加  分号 )     此时会在sqlite3.exe 所在目录,出现所建数据库的文件 三.如果想在Android中运行的话,需