標籤:android style blog http io ar color os 使用
- 安裝片
- Xamrin開發安卓筆記(一)
- Xamrin開發安卓筆記(二)
這次記錄的是捲軸跟sqlite建立、儲存和讀取。
先說捲軸相關,這個是比較簡單的知識點。
當有一屏的東西需要填寫的時候例如
我們都知道如果點擊第一個文字框則會出現IME。但是如果沒有捲軸的話,只能依靠IME中的斷行符號一個一個的向下移動(雖然現在IME都帶自我關閉功能),很不友好,那麼就需要捲軸,看了一下布局屬性有捲軸,但是使用起來不好使。隱約想起來,安卓有捲軸控制項,就在左邊找了一下,果真找到這個玩意了。如
但是這玩意如何使用呢,又進行了一次搜尋,原來這個東西可以套在布局標籤的外面,讓整個布局帶有捲軸(這個捲軸是橫向和縱向都帶的,可以通過屬性關閉)。
套在外面發現劃紅線了,產生的時候報錯。
錯誤 3 未定義命名空間首碼“android”。
解決辦法是把
xmlns:android="http://schemas.android.com/apk/res/android"
挪動到捲軸裡面即可。感覺這句話的意思是定義這個標籤裡面的所有標籤都執行安卓這個定義。
這樣在出現IME的時候就可以出現捲軸了。
簡單吧,更多屬性可以自行研究。
接下來說一下 本地庫 sqlite
首先他跟 T-sql文法稍微有一絲不同大部分相似,不同之處以後一點點的說,一次性全寫了我也記不住。
在網上和書上看到很多建立資料庫的方式,不過沒有一個完全正確的,書上的更扯蛋,很多內容已經被整合沒了。連引用空間都不一樣了(書上的文法貌似是很老的文法),所以這些內容只能作為線索來參考,甚至需要去參考java的安卓開發(布局方面請直接參考java開發方式)。
所以我找到了一個簡單明了的建立本地庫的方式,也總結了一套自己建立本地庫的基本原則。
1,在肯定需要使用的時候建立
2,沒必要建立的時候不建立
3,如果整套程式都需要使用本地庫,那麼在程式運行最初就建立
4,如果有條件手動建立好直接開發使用
建立和使用資料庫需要引用
using Android.Database.Sqlite;
有些書上和一些網上資料要引用mono,但是在我這個版本裡面已經不存在了(net4.5)。
代碼如下
SQLiteDatabase Database = null;//在最外稱定義這個 /// <summary> /// 建立資料庫 /// </summary> private void CreateData() { string strDataName = "PhoneBook.db3"; Database = this.OpenOrCreateDatabase(strDataName, FileCreationMode.Private, null); string strTable = "create table if not exists book(name,sex,age,phone)"; Database.ExecSQL(strTable); }
在最外層定義資料庫連接方法,因為一會有使用(因為是demo所以這麼些,正式項目肯定要寫的比現在的好一些)
定義建立方法定義資料庫名稱,DB3是資料庫副檔名,
OpenOrCreateDatabase 的方法大概意思是如果這個資料庫存在則開啟否則建立資料庫,並且是私人模式建立。
create table if not exists book(name,sex,age,phone)這句話的意思是這個表如果不存在則建立。mssql裡面就不能醬紫寫。
最後一句話的意思是執行sql。是不是跟ADO.NET很相似!
ok了至此我們做了一個建立一個資料庫和表的功能,然後在OnCreate方法調用這個方法就建立了一個資料庫。
網上有一些方法是利用IO去找這個庫是否存在,說一下 IO的方式建立的資料庫路徑跟這個方法建立的路徑完全不一樣(斷點調試可以看一下就知道了)
然後開始做按鈕的儲存事件如下代碼
1 btnSeve.Click += delegate 2 { 3 EditText txtName = FindViewById<EditText>(Resource.Id.txtName); 4 EditText txtAge = FindViewById<EditText>(Resource.Id.txtAge); 5 RadioGroup rdogSex = FindViewById<RadioGroup>(Resource.Id.rdogSex); 6 RadioButton rdoSex = FindViewById<RadioButton>(rdogSex.CheckedRadioButtonId); 7 ContentValues cv = new ContentValues(); 8 cv.Put("name", txtName.Text); 9 cv.Put("sex", rdoSex.Text);10 cv.Put("age", txtAge.Text);11 cv.Put("phone", txtPhone.Text);12 long a = Database.Insert("book", null, cv);13 var callDialog = new AlertDialog.Builder(this);14 callDialog.SetMessage("儲存成功");15 callDialog.SetNeutralButton("確定", delegate16 {17 var userDetail = new Intent(this, typeof(UserDetailActivity));18 //如果不寫參數則是無參數跳轉19 20 StartActivity(userDetail);21 });22 callDialog.Show();23 };
ContentValues cv = new ContentValues();
這個類似於ADO.NET中的sqlparameter類似put方法的第一個參數是列明,第二個是值。
long a = Database.Insert("book", null, cv);插入到這個表中(本來想詳細寫一下,無奈英語太渣,中間參數意思沒搞明白)。
這樣就執行了一個插入的功能,當然也可以使用ExecSQL方法來用sql執行插入,這裡不細說了。
跳轉到另一個頁面做查詢,做查詢之前也要開啟資料庫。用開啟或者建立的方式進行開啟資料庫。
查詢代碼如下
1 var data = Database.Query("book", new string[] { "name,sex,age,phone" }, "", null, "", "", ""); 2 while (data.MoveToNext()) 3 { 4 lblDetail.Text += data.GetString(0) 5 + data.GetString(1) 6 + data.GetString(2) 7 + data.GetString(3) + "|"; 8 } 9 data.Close();10 Database.Close();
這個查詢代碼就有一些類似於java的查詢方式,查詢哪個表,那些欄位,後面的條件為空白了,這些條件有排序 where 等(要查詢的表名,要擷取的欄位名,WHERE 條件,包含可選的位置參數,去替代 WHERE 條件中位置參數的值,GROUP BY 條件,HAVING 條件。)。
迴圈內部的GetString(Index)是列的位置,位置是從0開始。
基本就到這了,下次差不多是gridview方面相關內容了。
最後禁止轉載。話說誰能告訴我怎麼加內個禁止轉載的樣式??
來源於http://www.cnblogs.com/minCS/p/4118170.html
Xamrin開發安卓筆記(三)