[Xamarin] 關於SQLite 的操作 (转帖)
我們聊一下常用的東西,SQLite,這東西很常用到,當再寫手機APP的時候,有時候會在Client 做 cache或是做一些資料的管理都很必須會用到,我們來看看今天的範例
![]()
建立SQL Lite 資料庫,然後建立一張為Users 的資料表其欄位為 ID(數字,並且自動累加)、Name(ntext)、Addr(ntext) ,之後我們寫入一筆資料進去,之後並且將他查詢出來
1.在專案的開始我們首先得先引用幾個library : System.Data , System.Data.SQLite![]()
2.建立資料庫:
var sqlLiteFilePath = GetFileStreamPath("") + "/db_user.db";
//建立Database file @ data/data/
var btnCreateDB = FindViewById<Button>(Resource.Id.btnCreateDB);
btnCreateDB.Click += delegate
{
SqliteConnection.CreateFile(sqlLiteFilePath);
};
存放的路徑,我之前在Internal Storage章節有提到將會放置在 [PACKAGE NAME]/data/data/files/ 建立成功後你會看到該檔案
![]()
這樣代表就寫入成功了,請注意,當這一段重複執行,資料庫會被重置 我因為手機有root 所以我可以直接去該APP 下的資料存放位置觀看.
3.建立資料表 Users:
//建立table
var btnCeateTable = FindViewById<Button>(Resource.Id.btnCeateTable);
btnCeateTable.Click += delegate
{
try
{
var connectionString = String.Format("Data Source={0};Version=3;", sqlLiteFilePath);
var conn = new SqliteConnection(connectionString);
var cmd =
new SqliteCommand(
"CREATE TABLE Users (ID INTEGER PRIMARY KEY AUTOINCREMENT , Name ntext, Addr ntext)", conn)
{
CommandType = CommandType.Text
};
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Toast.MakeText(this, "建立完成", ToastLength.Short).Show();
}
catch (Exception ex)
{
Toast.MakeText(this, "建立失敗:" + ex.Message, ToastLength.Short).Show();
}
};
因為不能夠重複建立,所以我偷懶用try catch 起來,當然失敗原因不只包含這種狀況 建立成功後我點入db_user.db 終究會看到Users 那張資料表 ![]()
並且欄位為:
![]()
4.新增資料,這時候我們試試看將資料寫進去 :
//建立資料
var btnInsertData = FindViewById<Button>(Resource.Id.btnInsertData);
btnInsertData.Click += delegate
{
try
{
var connectionString = String.Format("Data Source={0};Version=3;", sqlLiteFilePath);
var conn = new SqliteConnection(connectionString);
conn.Open();
var cmd = new SqliteCommand(conn)
{
CommandText = "INSERT INTO Users (\"Name\",\"Addr\") VALUES(\"許當麻\",\"台灣台北\");",
CommandType = CommandType.Text
};
cmd.ExecuteNonQuery();
conn.Close();
Toast.MakeText(this, "資料寫入完成", ToastLength.Short).Show();
}
catch(Exception ex)
{
Toast.MakeText(this, "資料寫入完成:" + ex.Message, ToastLength.Short).Show();
}
};
![]()
看一下資料中的資料:
![]()
5.用程式將資料撈取出來呈現:
//查詢
var btnSelect = FindViewById<Button>(Resource.Id.btnSelect);
btnSelect.Click += delegate
{
try
{
//先清除LinearLayout中的所有資料 ,再重新匯入
var dataContainer = FindViewById<LinearLayout>(Resource.Id.dataContainer);
dataContainer.RemoveAllViews();
var connectionString = String.Format("Data Source={0};Version=3;", sqlLiteFilePath);
var conn = new SqliteConnection(connectionString);
conn.Open();
var cmd = new SqliteCommand(conn)
{
CommandText = "SELECT * FROM Users",
CommandType = CommandType.Text
};
var dr = cmd.ExecuteReader();
while (dr.Read())
{
var txtView = new TextView(this);
txtView.Text = dr["ID"] + "," + dr["Name"] + "," + dr["Addr"];
dataContainer.AddView(txtView);
}
conn.Close();
}
catch (Exception ex)
{
Toast.MakeText(this, "資料查詢失敗:" + ex.Message, ToastLength.Short).Show();
}
};
![]()
其中,我用一個名為 dataContainer 的LinearLayout 來裝資料.
如果原本對SQLite有操作經驗的人,對你們來說應該很簡單,如果是剛接觸的人,其實這沒有很難可以參考一下,這樣可以很方便解決資料存取的問題
reference : http://docs.xamarin.com/recipes/ios/data/sqlite/create_a_database_with_ado.net
[Xamarin] 關於SQLite 的操作 (转帖)的更多相关文章
- [Xamarin] 關於發出Notification 的大小事 (转帖)
關於Anroid 的使用者來說,Notification 是一個非常會看到且用到的功能 他可以提醒使用者甚麼東西需要待處理,像是郵件或是會議的提醒等.. 甚至有些APP ,直接使用Notificati ...
- [Xamarin] 關於Internal Storage ,存取App內部使用資料 (转帖)
最近在開發App,會使用到必須要處理一些App所使用的資料,上網路查一下Android 得作法,包含我自己也實作了一下,可能是因為對Java || Android 不是很孰悉,常常錯在 java.la ...
- 在laravel下關於blade模板的嘗試
Blade模板 關於模板繼承和分區段 @section和@yield的實驗 ①關於@section...@show嘗試 測試1 {{--appV2test.blade.php--}} <html ...
- Unity3D连接sqlite数据库操作C#版
unity3d有自己对应的sqlite.dll分别需要三个文件 1.Mono.Data.Sqlite.dll 在unity安装文件“Unity\Editor\Data\MonoBleedingEdge ...
- 实验8 SQLite数据库操作
实验报告 课程名称 实验8 SQLite数据库操作 实验日期 2016.5.6 实验项目名称 多媒体应用开发 实验地点 S30010 实验类型 □验证型 √设计型 □综合型 学 时 一 ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- 開博客了, 因為搞Delphi 開發的關於Delphi學習
開博客了, 因為搞Delphi 開發的關於Delphi學習,之前都是用本地TXT文件保存,發現在本地電腦保存非常不方面,而且只能在一台電腦上保存,不容易查看和修改內容.便於以後的記錄只用,以及經驗交流 ...
- [python]用Python进行SQLite数据库操作
用Python进行SQLite数据库操作 1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ ]: u ...
- 安卓 SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
随机推荐
- 如何为IIS增加svg和woff格式文件的支持
字体文件来显示矢量的图标,为了能在IIS上正常显示图标,可以通过增加iis的MIME-TYPE来支持图标字体文件: 增加以下两种文件类型即可: .woff application/x-woff.svg ...
- Failed to load the JNI shared library jvm.dll
jdk和使用的ide版本不符合,换一个版本的jdk或者换版本的ide
- ffmpeg去logo<转>
用到 video filter —— delogo 通过周围像素插值去除 logo. 参数介绍: x y (必须)指定 logo 的坐标. w h (必须)指定 logo 的宽和高. band, t ...
- java应用死循环排查方法或查找程序消耗资源的线程方法(面试)
今天遇到一个面试,怎么在一堆线程中查找一个死循环? 如果遇到线上应用cpu飙升,并出现OutOfMemery怎么办? 首先线上应用的jvm配置要养成良好的习惯,增加一下配置则可以在jvm发生 oom的 ...
- mongoDB 使用手册
1.基本操作db.AddUser(username,password) 添加用户db.auth(usrename,password) 设置数据库连接验证db.cloneDataBase(fromh ...
- CString转换成char*
CString转换成char* :charSource = (char*)strSource.GetBuffer(0); 法2:charSource = (char*)strSource.GetBuf ...
- 使用SftpDrive+SourceInsight阅读开源代码
在虚拟机环境下使用Linux编写和阅读代码,我之前一直是通过Xshell利用ssh登录至虚拟机从而在命令行下使用vim来进行的.目前有阅读开源代码的需要,虽然vim+ctags+cscope可以完成这 ...
- Nginx服务测试时的一些配置:wireshark、常用搜索URL格式、关闭防火墙、siege
wrieshark sudo yum install wireshark-gnome sudo wireshar (以root启动,否则看不到网卡) 网站URL格式 以查询lumia为例 google ...
- 想要隐藏navigationBar,同时又想支持右滑返回功能
如果直接设置 self.navigationBarHidden = YES; 那同时也会屏蔽右滑返回功能. 解决办法1: self.navigationBarHidden = NO; self.nav ...
- (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...