Microsoft PowerPoint - 09.Android 程式設計-SQLite

Similar documents
主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

投影片 1

目錄

Microsoft PowerPoint - 12 jQuery Mobile 事件處理方式

untitled

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

untitled

實作SQLiteOpenHelper類別

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

untitled

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

Oracle 4

基于UML建模的管理管理信息系统项目案例导航——VB篇

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

untitled

Oracle高级复制冲突解决机制的研究

ebook45-5

0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT au_fname,au_ lname FROM authors ORDER BY

untitled

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

建立Android新專案

四川省普通高等学校

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

3 Driver do Microsoft Access (*.mdb) hisdata IFIX 1.4

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

Microsoft PowerPoint - course10.ppt

Microsoft PowerPoint - 資料庫程式設計教材.pptx

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

untitled

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

FP.pdf


数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

Microsoft PowerPoint - VB14.ppt

PowerPoint Presentation

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

Business Objects 5.1 Windows BusinessObjects 1

习题1

untitled

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63>

Microsoft PowerPoint - 13_ClassAndObj.ppt

穨ac3-4.PDF

幻灯片 1

PowerPoint 演示文稿

fsfdsa

01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysa

ebook 96-16

Microsoft PowerPoint - Lecture7II.ppt

PPBSalesDB.doc

VB控件教程大全

untitled

Microsoft PowerPoint - asp15

SQL: Interactive Queries (2)

Database_001

3.1 num = 3 ch = 'C' 2

プリント

Microsoft Word - 11.doc

未命名

<4D F736F F D20BBB7BEB3D0C5CFA2CFB5CDB3CAFDBEDDBFE2B7C3CECABDD3BFDAB9E6B7B6A3A8B1A8C5FAB8E5A3A E646F63>

Microsoft PowerPoint - SAGE 2010

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

Flexsim: (Open DataBase Connectivity, ODBC)

晶体结构立体模型建构软件-Diamond的使用

目錄... ivv...vii Chapter DETECT

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

建 立 数 据 库 档 案 用 sqlite3 建 立 数 据 库 的 方 法 很 简 单, 只 要 在 shell 下 键 入 ( 以 下 $ 符 号 为 shell 提 示 号, 请 勿 键 入 ): $ sqlite3 foo.db 如 果 目 录 下 没 有 foo.db,sqlite3 就

第一章

AL-M200 Series

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

ThreeDtunnel.doc

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

MVB-1001.DOC

计算机在汉语研究中的应用――以字频统计为例

ebook 165-5

Transcription:

計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 程式設計 -SQLite 國立高雄大學資訊工程學系張保榮教授

大綱 SQLite execsql() 函式 rawquery() 函式 insert() 函式 delet() 函式 update() 函式 query() 函式 close() 函式

SQLite Android 系統使用 SQLite 資料庫系統, 提供 QLiteDatabase 類別來處理資料庫的建立 修改 刪除 查詢等操作方式 而 SQLite 是一個嵌入式的資料庫, 適合 SQL 語法 假若資料的數量是固定的, 則適合使用 SQLite 來建立資料庫 建立 SQLite 資料庫的語法如下 : SQLiteDatabase 物件 = openorcreatedatabase( 檔名, 權限,null);

SQLiteDatabase 類別 SQLiteDatabase 類別提供的方法 : 方法 execsql() rawquery insert() delet() update() query() close() 定義 執行 SQL 命令, 可完成資料表的建立 新增 修改 刪除等動作 以 Cursor 型別回傳資料, 常用於查詢所有資料 資料新增, 以 ContentValues 類別將資料打包再新增到資料表中 刪除指定的資料 資料修改, 以 ContentValues 類別將資料打包再更新資料表內容 以 Cursor 類別傳回指定的欄位資料 關閉資料庫

execsql() 方法 execsql() 方法執行 SQL 命令 SQLiteDatabase 類別提供 execsql() 來執行非 SELECT 及不需要回傳值得 SQL 命令 建立資料表 例如 : 建立資料庫 table01, 內含的欄位為 id num data, 而 id 為自動編碼的主索引欄位, 其他為整數和文字欄位 程式碼如下 : String str = CREATE TABLE table01(id INTEGERPRIMARY KEY,num INTERGER, data TEXT); db.execsql(str);

execsql() 方法 ( 續 ) 新增 String str = INSERT INTO table01 (num,data) values (1, 資料科目 ) ; db.execsql(str); 修改 String str = UPDATE table01 SET num=12,data= 資料更新 WHERE id=1 ; db.execsql(str); 刪除 String str = DELET FROM table01 WHERE id=1 ; db.execsql(str); 移除 String str = DROP TABLE table01 ; db.execsql(str); 關閉 db.close();

execsql() 方法 ( 續 ) 基本畫面

execsql() 方法 ( 續 ) [src] MainActivity.java 完整程式碼如下 先匯入類別元件

execsql() 方法 ( 續 )

execsql() 方法 ( 續 ) 實現 Button 的功能

execsql() 方法 ( 續 )

execsql() 方法 ( 續 ) 模擬器測試結果

rawquery() 方法 rawquery() 和 execsql() 一樣, 都可以執行 SQL 指令, 只是 rawquery() 用於查詢結果或資料 查詢資料表 例如 : 查詢資料表 table01 的所有資料, 並以 Cursor 類型回傳查詢的資料 程式碼如下 : Cursor data = db.rawquery( SELECT * FROM table01,null); 也可以查詢單一欄位的資料, 例如 :id=1 的資料內容 Cursor data = db.rawquery( SELECT * FROM table01 WHERE id=1,null);

rawquery() 方法 ( 續 ) Cursor 類別常用的方法 : 方法 定義 move 以目前位置為參考, 將 Cursor 移動到指定位置 movetoposition 將 Cursor 移到指定的位置, 並回傳 true/false 表示成功或失敗 movetofirst 將 Cursor 移到第一筆, 並回傳 true/false 表示成功或失敗 movetoprevious 將 Cursor 移到上一筆, 並回傳 true/false 表示成功或失敗 movetonext 將 Cursor 移到下一筆, 並回傳 true/false 表示成功或失敗 movetolast 將 Cursor 移到最後一筆, 並回傳 true/false 表示成功或失敗 isbeforefist 回傳 Cursor 是否在第一筆資料之前 isafterlast 回傳 Cursor 是否在最後一筆資料之後 isclosed 回傳 Cursor 是否是否關閉 isfirst 傳回是否是第一筆資料 isnull 傳回指定的資料是否為 null getcount 傳回共有多少筆資料 getposition 取得目前資料所在位置的索引 getint 取得指定索引的 Integer 型別資料 getstring 取得指定索引的 String 型別資料

query() Query() 將 SQL 語法的結構拆解為參數, 包括了要查詢的資料表名稱 要選取的欄位 ;WHERE 篩選條件, 篩選條件參數名 篩選條件參數值 ;GROUP BY 條件 ;HAVING 條件 除了資料表名稱以外, 其餘參數都可使用 null 來取代 語法如下 : Cursor data = query(string table, String[] columns, String selection, String[] selectionarg, String groudby,string having,string orderby, String limit);

query()( 續 ) data: 傳回指定的欄位資料 table: 資料表名稱 columns: 資料表欄位名稱, 設定 null 代表取得所有欄位 selection: 指定查詢的條件, 不必加 WHERE 子句, 設定 null 代表取 得所有欄位 selectionarg: 定義 SQL WHERE 子句中的? 查詢參數 groudby: 設定群組, 不必加 GROUP BY 子句, 設定 null 代表不指定 having: 設定群組, 不必加 HAVING 子句, 設定 null 代表不指定 orderby: 設定群組, 不必加 ORDER BY 子句, 設定 null 代表不指定 limit: 取得資料筆數, 不必加 LIMIT 子句, 設定 null 代表不指定

query()( 續 ) 例如 : 查詢 table01 中所有的資料 db.query( table01,new String[] { num, data }, null, null, null, null,null, null); 例如 : 查詢 table01 中 id=1 的資料 db.query( table01,new String[] { num, data }, id=1, null, null, null,null, null);

insert() 使用 CententValues 類別將資料先以打包的方式, 再以 put() 方法加入資料 語法如下 : CententValues data = new ContentValues(); data.put( name, 郵票 ); data.put( price,15); db.insert( table01,null,data); 方法等同於 SQL 的指令 String str = INSERT INTO table01 (num,data) values (1, 資料科目 ) ; db.execsql(str);

delete() 例如 : 刪除資料表中 id=1 的資料, 語法如下 : int id=1; db.delete( table01, id= +id,null); 方法等同於 SQL 的指令 String str = DELET FROM table01 WHERE id=1 ; db.execsql(str);

update() 使用 CententValues 類別將資料先以打包的方式, 用 put() 方法加入資料, 再透過 update() 更新資料表 CententValues data = new ContentValues(); data.put( name, 郵票 ); data.put( price,15); db.update( table01,id=1,data); 等同於 SQL 的指令 String str = UPDATE table01 SET num=12,data= 資料更新 WHERE id=1 ; db.execsql(str);

SimpleCursorAdapter 類別 rawquery() 或 query() 的查詢資料是以 Cursor 的類別來呈現, 只回傳程式中目前需要用到的資料, 可以節省記憶體資源 假如今天要將資料表的資料顯示在 ListView 上, 則必須使用到 SimpleCursorAdapter 類別當作資料的配接器 ( 暫存 ) SimpleCursorAdapter 語法如下 : SimpleCursorAdapter(Context context, int layout, Cursor cursor, String[] from, int[] to, int flags); context: 表示目前的主程式 layout: 表示顯示的版面配置檔 cursor: 表示要顯示的資料 from: 表示要顯示的欄位 to: 表示版面配置中對應顯示的元件 flags: 建議 flags 值使用 0 可得較佳的匹配 (4.X 版之後才有設定 flags 值 )

SimpleCursorAdapter 類別 ( 續 ) 語法如下 : Cursor cursor = db.rawquery( SELECT * FROM table01,null); SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2, cursor,new String[] { num, data },new int[] {android.r.id.text1,android.r.id.text2},0); listview01.setadapter(adapter);

SimpleCursorAdapter 類別 ( 續 ) [src] MainActivity.java 完整程式碼如下 先匯入類別元件

SimpleCursorAdapter 類別 ( 續 )

SimpleCursorAdapter 類別 ( 續 )

SimpleCursorAdapter 類別 ( 續 )

SimpleCursorAdapter 類別 ( 續 )

SimpleCursorAdapter 類別 ( 續 )

SimpleCursorAdapter 類別 ( 續 )

SimpleCursorAdapter 類別 ( 續 ) 模擬器測試結果

自訂類別的方法 方法 定義 MyDB() 傳入建立物件的 Activity open() 開啟以存在的資料庫 ( 表 ), 若不存在則新建一個資料庫 ( 表 ) close() 關閉資料庫 getall() 查詢所有資料 ( 只取出 id name price 等三個欄位 ) get() append() update() delete() 查詢所指定的資料 新增一筆資料 更新指定的資料 刪除指定的資料

Create MyDB [src] MainActivity.java 完整程式碼如下 先匯入類別元件

Create MyDB ( 續 )

Create MyDB ( 續 )

Create MyDB ( 續 )

Create MyDB ( 續 ) 實現 Button 功能 使用錯誤捕捉的功能

Create MyDB ( 續 )

Create MyDB ( 續 ) [src] 新增 MyDB.java, 並寫入下列的完整程式碼 如下 :

Create MyDB ( 續 )

Create MyDB ( 續 )

Create MyDB ( 續 ) 模擬器測試結果 新增一筆資料, 名稱 :Banana, 價格 :30 其餘的功能同學自行測試

END