1 / 46

Android 資料庫處理

Android 資料庫處理. 建國科技大學 資管系 饒瑞佶 2011/1. M VC Model. Model-View-Controller Model :儲存內容 View :顯示介面 Controller : 控制程式操作. 使用者. View. 要求動作. 顯示內容. Controller. 查詢資料. Model. 提供資料. Android 資料庫- SQLite. 資料庫 SQLite 檔案式資料庫 適合嵌入式系統,不需要額外安裝系統 OPEN SOURCE 資料庫 SQL 指令與一般 DBMS 大同小異,但有些微差異.

zora
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. MVCModel • Model-View-Controller • Model:儲存內容 • View:顯示介面 • Controller:控制程式操作 使用者 View 要求動作 顯示內容 Controller 查詢資料 Model 提供資料

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

  4. SQLite管理 adb shell + sqlite3

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

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

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

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

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

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

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

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

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

  14. 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 資料型態, • …. • );

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

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

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

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

  19. SQLite資料相關SQL指令

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

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

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

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

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

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

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

  27. SQLite+Android

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

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

  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 • 為何會錯誤? 跟執行流程有關!

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

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

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

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

  39. 連結外部DB • 不直接接觸DB • 透過外部php或ASP.NET程式連結資料庫 • Android再呼叫外部php或ASP.NET程式 • 可以傳遞參數

  40. 連結外部DB • WebLogin專案

  41. 連結外部DB • WebLogin專案

  42. 連結Web Service • 不直接接觸DB • 透過Web Service連結資料庫 • Android再呼叫外部Web Service • 可以傳遞參數

  43. 連結Web Service • Sample CallWebService專案 • 使用ksoap2-android • 下載位置:http://code.google.com/p/ksoap2-android/source/browse/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/2.5.2/ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar • 注意DNS問題

  44. 連結Web Service • 使用ksoap2-android • 下載後如果副檔名是zip,請更改成jar • 請在project中加入本jar 1 2 3

  45. 連結Web Service • 注意DNS問題 • 若執行出現 host is unresolved的問題 • 解決方法 adbshell #getprop<<查看屬性設定 [net.dns1]: [192.168.2.1] <<某一筆是 net.dns1 就是目前的設定 #setpropnet.dns1 168.95.1.1 <<設定成可以用的DNS

  46. 連結Web Service • xx

More Related