android使用Sqlite做本地存儲非常常見(打個比方就像是浏覽器要做本地存儲使用LocalStorage,貌似不是很恰當,大概就是這個意思)。
SQLite 是一個軟體庫,實作了自給自足的、無伺服器的、零配置的、事務性的 SQL 資料庫引擎。SQLite 是在世界上最廣泛部署的 SQL 資料庫引擎。SQLite 源代碼不受版權限制。
如果不是很熟悉Sqlite,建議花點時間看看鳥巢
http://www.runoob.com/sqlite/sqlite-tutorial.html sqlite基礎教程。
下面我們就開始學習一下在Xamarin android中如何使用Sqlite呢?首先我們還是這個最終的效果圖,主要的流程就是先注冊添加一條使用者資料,然後登陸sqlite資料庫,也就是做一個添加和查詢。先看一下效果圖:
這裡要注意一下,Nuget上關于sqlite的xamarin類庫非常多,很多國外的作者都寫了sqlite的類庫,是以要注意甄别,你會發現使用的方法幾乎是一樣的。
https://github.com/praeclarum/sqlite-net/blob/master/src/SQLite.cs
引入sqlite-net ,僅僅是多了SQLite.cs 和 SQLiteAsync.cs兩個類庫而已。比較友善的一種,可以直接看源碼。
1.nuget引用sqlite-net 如圖
2.建立一個實體UserInfo.cs
[Table("UserInfo")]
public class UserInfo
{
[PrimaryKey,AutoIncrement,Collation("Id")]
public int Id { get; set; }
public string UserName { get; set; }
public string Pwd { get; set; }
}
3.MainActivity.cs 代碼開單詞就知道是什麼意思
public class MainActivity : Activity
{
int count = 1;
private SQLiteConnection sqliteConn;
private const string TableName = "UserInfo";
private string dbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "userinfo.db3");
private Button btnLogin;
private Button btnRegister;
private TextView tv_user;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
sqliteConn = new SQLiteConnection(dbPath);
btnLogin = FindViewById<Button>(Resource.Id.btn_login);
btnRegister = FindViewById<Button>(Resource.Id.btn_register);
tv_user = FindViewById<TextView>(Resource.Id.tv_user);
btnLogin.Click += delegate {
var userName = FindViewById<EditText>(Resource.Id.userName).Text;
var pwd = FindViewById<EditText>(Resource.Id.pwd).Text;
Login(userName,pwd);
};
btnRegister.Click += delegate
{
var userName = FindViewById<EditText>(Resource.Id.userName).Text;
var pwd = FindViewById<EditText>(Resource.Id.pwd).Text;
Register(userName,pwd);
};
}
private void Login(string userName,string pwd)
{
if (!File.Exists(dbPath))
{
sqliteConn = new SQLiteConnection(dbPath);
}
var userInfoTable = sqliteConn.GetTableInfo(TableName);
if (userInfoTable.Count == 0)
{
sqliteConn.CreateTable<UserInfo>();
}
var userInfos = sqliteConn.Table<UserInfo>();
var userInfo = userInfos.Where(p => p.Pwd == pwd && p.UserName == userName).FirstOrDefault();
if (userInfo == null)
{
Toast.MakeText(this, "使用者名或密碼不正确", ToastLength.Short).Show();
}
else
{
Toast.MakeText(this, "登入成功", ToastLength.Short).Show();
}
}
private void ShowUser()
{
if (!File.Exists(dbPath))
sqliteConn = new SQLiteConnection(dbPath);
var userInfoTable = sqliteConn.Table<UserInfo>();
StringBuilder sb = new StringBuilder();
foreach (var item in userInfoTable)
{
sb.Append("username:" + item.UserName + "pwd:" + item.Pwd + "\n");
}
tv_user.Text = sb.ToString();
}
private void Register(string userName,string pwd)
{
if(!File.Exists(dbPath))
sqliteConn = new SQLiteConnection(dbPath);
var userInfoTable = sqliteConn.GetTableInfo(TableName);
if (userInfoTable.Count == 0)
{
sqliteConn.CreateTable<UserInfo>();
}
UserInfo model = new UserInfo() {Id=1, UserName=userName,Pwd=pwd };
sqliteConn.Insert(model);
Toast.MakeText(this, "注冊成功", ToastLength.Short).Show();
ShowUser();
}
}
現在是已經能增删改查了,但是如何檢視xamarin android中sqlite的資料庫呢,adb shell進入sqlite資料庫即可檢視
就這樣吧,代碼比較簡單,sqlite還是挺有意思,先睡了吧。
例子下載下傳位址:
http://download.csdn.net/detail/kebi007/9718965作者:張林
标題:amarin android使用Sqlite做本地存儲資料庫 原文位址:
http://blog.csdn.net/kebi007/article/details/53795552 http://blog.csdn.net/kebi007/article/details/52887570轉載随意注明出處