1 / 91

Android 資料庫處理

Android 資料庫處理. 建國科技大學 資管系 饒瑞佶 2011/1. Android 資料庫- SQLite. 資料庫 SQLite 檔案式資料庫 適合嵌入式系統,不需要額外安裝系統 OPEN SOURCE 資料庫 SQL 指令與一般 DBMS 大同小異,但有些微差異. SQLite 管理. adb shell + sqlite3. SQLite 操作- adb shell. 沒有 AVD 或是手機. 沒有連線的 device. SQLite 操作- adb shell. 先用 android list avd 看可以用的 AVD.

valiant
Download Presentation

Android 資料庫處理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Android資料庫處理 建國科技大學 資管系 饒瑞佶 2011/1

  2. Android資料庫-SQLite • 資料庫 • SQLite • 檔案式資料庫 • 適合嵌入式系統,不需要額外安裝系統 • OPEN SOURCE資料庫 • SQL指令與一般DBMS大同小異,但有些微差異

  3. SQLite管理 adb shell + sqlite3

  4. SQLite操作-adb shell • 沒有AVD或是手機 沒有連線的device

  5. SQLite操作-adb shell • 先用android list avd看可以用的AVD 可用的AVD

  6. SQLite操作-adb shell • 再使用emulator –avd <AVD名稱>啟動一個AVD • 例如:emulator –avdmy_avd 啟動中的my_avd

  7. SQLite操作-adb shell • my_avd模擬器

  8. SQLite操作-adb shell • 再次執行adb shell,就可以看到#提示符號 #提示符號

  9. SQLite操作-adb shell • 建議進入sdcard內建立目錄存放資料庫 進入sdcard 在sdcard內建立mydb目錄 進入mydb目錄

  10. SQLite操作-adb shell • 請在#提示符號後輸入sqlite3 <資料庫名稱> • 例如sqlite3 db1 • 如果資料庫不存在會自動建立,可以看到sqlite>提示符號 sqlite>提示符號

  11. SQLite操作-adb shell • 離開是.quit (注意有一個.) • 現在可以開始操作db1資料庫 • 使用SQL指令進行操作,包括: • 建立欄位與資料表(結構部分) • 建立資料(資料部分) • 維護資料(資料部分)

  12. SQLite結構相關SQL指令 不分大小寫

  13. SQL指令-結構操作 • create table:建立資料表 • 藍色是要填資料的部分,其它是固定語法 • 所有SQL指令都要以;結束 • create table member( • id char(20) not null, • name char(20) not null, • pwd char(20) not null, • age int, • PRIMARY KEY(id) • ); • create table資料表名稱 ( • 欄位1 資料型態, • 欄位2 資料型態, • …. • );

  14. SQL指令-結構操作 • .tables:可以查看目前資料庫內存在的資料表 • .help:可以看sqlite3所有指令 沒有任何資料表

  15. SQL指令-結構操作 • create table:建立資料表 member資料表已經被建立

  16. SQL指令-結構操作 • .schema:查看資料表結構 member資料表結構

  17. SQL指令-結構操作 • alter table:更改資料表結構 增加欄位 • alter table資料表名稱 add欄位1 資料型態; 更改資料表名稱 • alter table資料表名稱 rename to新資料表名稱; • drop table:刪除資料表 • drop table資料表名稱;

  18. SQLite資料相關SQL指令

  19. SQL指令-資料操作 • insert:新增資料 所有資料都要加上單引號 • insert into 資料表名稱 (欄位1,欄位2…) values (‘資料1’,’資料2’…); 已在member資料表中新增一筆資料

  20. SQL指令-資料操作 • Select:篩選資料 • select 欄位s from資料表名稱 where條件; 加入where條件

  21. SQL指令-資料操作 • update:更新資料 • update 資料表名稱 set 欄位=‘新值’… where條件; 姓名改成大寶

  22. SQL指令-資料操作 • delete:刪除資料 • Delete from 資料表名稱 where條件; 先新增一筆資料 刪除剛新增的資料

  23. SQL指令-結構操作 • SQLite沒有刪除欄位的指令,例如 ALTER TABLE DROP COLUMN • 那怎麼辦?

  24. SQL指令-結構操作 新增一個備份資料庫member_backup 將資料從member搬到member_backup 刪除member 再新增一個member,此時不要含要刪掉的欄位 再把資料從member_backup搬到member 刪除member_backup 完成

  25. 更多SQLite SQL指令 • http://www.newobjects.com/pages/ndl/SQLite3/sql.htm#ALTER TABLE

  26. SQLite+Android

  27. SQLite+Android • 建立新專案-HelloDB

  28. SQLite+Android • 首先,在主程式中加入SQLiteOpenHelper結構 必要的class 建立db2.db資料庫 資料庫第一次建立時會執行onCreate 資料庫異動版本時會執行onUpgrade

  29. SQLite+Android • SQLiteOpenHelper結構 // SQLite資料庫使用必要class ------------------------ String DATABASE_TABLE = "member"; String DATABASE_CREATE_TABLE = "create table " + DATABASE_TABLE + "(_id char(20), name, pwd, age, primary key(_id));"; class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, "/sdcard/db2.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE_TABLE); //新增資料表 } @Override public void onUpgrade(SQLiteDatabase db, intoldV, intnewV) { } }

  30. SQLite+Android • 從class HelloDB呼叫DatabaseHelper建立資料庫 建立DatabaseHelper物件 呼叫建立db2.db資料庫

  31. SQLite+Android • 資料庫被建立在data/data/com.android.hellodb

  32. SQLite+Android • 資料庫被建立在data/data/com.android.hellodb

  33. SQLite+Android • 有資料庫後,下一步要建立資料表與資料 新增資料 定義資料表結構 建立資料表

  34. SQLite+Android • 建立資料表schema String DATABASE_TABLE = "member"; String DATABASE_CREATE_TABLE = "create table " + DATABASE_TABLE + "(_id char(20), name, pwd, age, primary key(_id));"; class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, "/sdcard/db2.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE_TABLE); //新增資料表 } @Override public void onUpgrade(SQLiteDatabase db, intoldV, intnewV) { } } 建立資料表結構

  35. SQLite+Android • 為何會錯誤? 跟執行流程有關!

  36. SQLite+Android • 幾點注意! 1.下面這段只有在資料庫第一次被建立時才會進行,所以如果資料庫已經存在,那就不會建立資料表,當然也就不能寫入資料 上張投影片的錯誤就是因為我們已經先建立db2.db,因此再次執行程式時,並不會建立資料表,導致下面程式出錯

  37. SQLite+Android • 正常執行結果 資料庫 資料表 資料 中文資料有亂碼

  38. SQLite+Android • 最後,可以進行資料查詢 再新增一筆資料(小黑) SQL查詢指令 資料移動到第一筆 顯示資料

  39. SQLite+Android • 實際顯示沒有亂碼

  40. 小練習 • 使用上述課程member資料表 • 設計一個登入畫面,可以讓使用者輸入帳號與密碼 • 輸入完成後按下「確認」按鈕後,連回資料庫內的member 資料表進行確認(id與pwd欄位) • 輸入正確者跳至下一個頁面(自訂),錯誤者請跳出訊息提示框

  41. 透過ListView顯示資料庫資料

  42. 透過ListView顯示資料整個版面都用ListActivity 改成ListActivity 刪除

  43. 透過ListView顯示資料 ArrayAdapter 陣列資料

  44. 透過ListView顯示資料 陣列資料 private static final String[] mStrings = new String[] { "大餅包小餅", "蚵仔煎", "東山鴨頭", "臭豆腐", "潤餅", "豆花", "青蛙下蛋","豬血糕", "大腸包小腸", "鹹水雞", "烤香腸","車輪餅","珍珠奶茶","鹹酥雞","大熱狗", "炸雞排","山豬肉","花生冰","剉冰","水果冰", "包心粉圓","排骨酥","沙茶魷魚","章魚燒","度小月", "aaa","abc","bbb","bcd","123" };

  45. 透過ListView顯示資料 選了怎麼不會勾選?

  46. 透過ListView顯示資料 加入: ListViewlv = this.getListView(); lv.setChoiceMode( ListView.CHOICE_MODE_SINGLE ); 修改:android.R.layout.simple_list_item_checked ListView勾選效果

  47. 透過ListView顯示資料 偵測選擇資料

  48. 透過ListView顯示資資料

  49. 透過ListView顯示資料 • 假設是在Activity中除了ListView之外,還要放入其他的組件時,這時候就需要在Activity中加入一個ListView物件,利用這個組件的setAdapter來連接Adapter

  50. 透過ListView顯示資料 main.xml版面 ListView物件的id

More Related