Giáo trình Lập trình thiết bị di động 2 (Nghề: Ứng dụng phần mềm - Trình độ: Cao đẳng) - Trường Cao đẳng nghề Cần Thơ
lượt xem 8
download
Giáo trình "Lập trình thiết bị di động 2 (Nghề: Ứng dụng phần mềm - Trình độ: Cao đẳng)" được biên soạn nhằm giúp sinh viên truy xuất tài nguyên dùng chung trên thiết bị; xây dựng ứng dụng với cơ chế chia sẻ tài nguyên; mô hình tổ chức dữ liệu theo cấu trúc cơ sở dữ liệu; tối ưu hoá trải nghiệm người dùng với cơ chế sắp xếp bố cục giao diện, chuyển hoạt và tuỳ chỉnh hiển thị điều khiển;...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Giáo trình Lập trình thiết bị di động 2 (Nghề: Ứng dụng phần mềm - Trình độ: Cao đẳng) - Trường Cao đẳng nghề Cần Thơ
- TUYÊN BỐ BẢN QUYỀN Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo. Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm.
- LỜI GIỚI THIỆU Trong thập kỷ vừa qua, Android đã trở thành một nền tảng phổ biến hơn bao giờ hết với hơn 1.4 tỷ người dùng và 80% số lượng thiết bị di động sử dụng hệ điều hành Android. Con số ấn tượng này cũng cho thấy nhu cầu phát triển các ứng dụng chạy trên hệ điều hành Android. Lập trình ứng dụng dần trở thành công việc với cơ hội nghề nghiệp rộng mở và mức lương hấp dẫn. Lập trình thiết bị di động 2 là một trong những mô đun cơ sở của nghề Ứng dụng phần mềm được biên soạn dựa theo Bài trình đào tạo đã xây dựng và ban hành năm 2021 của trường Cao đẳng nghề Cần Thơ dành cho nghề Ứng dụng phần mềm hệ Cao đẳng. Khi biên soạn, nhóm biên soạn đã dựa trên kinh nghiệm thực tế giảng dạy, tham khảo đồng nghiệp, tham khảo các giáo trình hiện có và cập nhật những kiến thức mới có liên quan để phù hợp với nội dung Bài trình đào tạo và phù hợp với mục tiêu đào tạo, nội dung được biên soạn gắn với nhu cầu thực tế. Nội dung giáo trình được biên soạn với lượng thời gian đào tạo 45 giờ gồm có: Bài 1 MĐ29-01: Lưu trữ dữ liệu – SQLITE Bài 2 MĐ29-02: Quản lý dữ liệu với Content Provider Bài 3 MĐ29-03: Menu - Action Bar - Toolbar Bài 4 MĐ29-04: Action Provider, điều khiẻn tìm kiếm và các chuyển hoạt Bài 5 MĐ29-05: Asynctask - Thread - Handler Bài 6 MĐ29-06: Service - Broadcast Receiver và Notification Bài 7 MĐ29-07: Khai thác tài nguyên internet và giao thức kết nối Webservice Bài 8 MĐ29-08: Thao tác với dữ liệu XML và JSON Bài 9 MĐ29-09: Google Map và Google Cloud Messaging Bài 10 MĐ29-10: Các điều khiển đa truyền thông Bài 11 MĐ29-11: Telephone & Sms và bộ cảm biến Mặc dù đã cố gắng tổ chức biên soạn để đáp ứng được mục tiêu đào tạo nhưng không tránh được những thiếu sót. Rất mong nhận được sự đóng góp ý kiến của các thầy, cô và bạn đọc để nhóm biên soạn sẽ điều chỉnh hoàn thiện hơn. Cần Thơ, ngày tháng năm 2021 Tham gia biên soạn 1. Chủ biên Nguyễn Hoàng Vũ 2
- MỤC LỤC LỜI GIỚI THIỆU ......................................................................................................... 2 MỤC LỤC ...................................................................................................................... 3 GIÁO TRÌNH MÔN HỌC/MÔ ĐUN ......................................................................... 8 BÀI 1: LƯU TRỮ DỮ LIỆU – SQLITE ................................................................... 10 Mã BÀI: MĐ29-01....................................................................................................... 10 1. KHÁI NIỆM CƠ SỞ DỮ LIỆU (DATABASE CONCEPTS) ............................. 10 2. GIỚI THIỆU SQLITE .......................................................................................... 10 3. XÂY DỰNG CƠ SỞ DỮ LIỆU VỚI SQLITE .................................................... 11 3.1 Tạo Cơ sở dữ liệu ................................................................................................ 11 3.2 Mở Cơ sở dữ liệu ................................................................................................ 12 4. TRUY VẤN DỮ LIỆU ......................................................................................... 13 4.1 Truy vấn (Query) ................................................................................................ 13 4.1.1 Truy vấn với câu lệnh SQL .............................................................................. 13 4.1.2 Truy vấn với cú pháp hàm ............................................................................... 14 4.2 Quản lý ................................................................................................................ 15 4.2.1 Insert ................................................................................................................ 15 4.2.2 Update .............................................................................................................. 15 4.2.3 Delete ............................................................................................................... 16 5. SẮP XẾP DỮ LIỆU ............................................................................................. 16 5.1 Truy vấn sắp xếp ................................................................................................. 16 5.1.1 Tăng dần (ASCENDING) ................................................................................ 16 5.1.2 Giảm dần (DESCENDING)............................................................................. 16 5.2 Truy vấn gom nhóm ............................................................................................ 16 Bài tập của học viên .................................................................................................. 18 Hướng dẫn thực hiện................................................................................................. 18 Những trọng tâm cần chú ý....................................................................................... 26 Bài mở rộng và nâng cao .......................................................................................... 26 Yêu cầu đánh giá kết quả học tập ............................................................................. 26 BÀI 2: QUẢN LÝ DỮ LIỆU VỚI CONTENT PROVIDER .................................. 28 Mã BÀI: MĐ29 - 02..................................................................................................... 28 1. Giới thiệu Content Provider .................................................................................. 28 1.1. Content Provider ............................................................................................ 28 1.2 Lợi ích Content Providers............................................................................... 29 1.3 Kiến trúc Content Providers ........................................................................... 30 1.3.1. Data and Open Helper ................................................................................ 30 1.3.2. Contract ...................................................................................................... 30 1.3.3. Content Provider ......................................................................................... 30 1.3.4. Content Resolver ........................................................................................ 31 1.4 Content URI .................................................................................................... 31 1.5. ContentResolver ............................................................................................ 31 2. Xây dựng Content Provider cho ứng dụng ........................................................... 33 2.1 Vấn đề xây dựng ContentProvider ................................................................. 33 2.2 Authority & UriMatcher ................................................................................. 33 2.2.1 Authority:..................................................................................................... 34 2.2.2 UriMatcher: ................................................................................................. 34 3. TRUY VẤN DỮ LIỆU HỆ THỐNG VỚI CONTENT PROVIDER .................. 34 3
- 3.1. Các phương thức điều khiển Cursor ............................................................. 34 3.2 Truy vấn dữ liệu hệ thống .............................................................................. 35 Bài tập của học viên ..................................................................................................36 Hướng dẫn thực hiện .................................................................................................36 Những trọng tâm cần chú ý: ......................................................................................39 Bài mở rộng và nâng cao ...........................................................................................39 Yêu cầu đánh giá kết quả học tập ..............................................................................40 BÀI 3 : MENU - ACTION BAR - TOOLBAR .........................................................41 Mã BÀI: MĐ29 -03 ......................................................................................................41 1. MENU ...................................................................................................................41 1.1 Option Menu .................................................................................................. 41 1.2 Context Menu ................................................................................................. 42 1.3. PopUp Menu ................................................................................................. 45 2. ACTION BAR .......................................................................................................47 2.1 Giới thiệu ....................................................................................................... 47 2.2 Tạo ActionBar ................................................................................................ 49 2.3. Thao tác với ActionBar ................................................................................. 50 3. CHẾ ĐỘ ĐIỀU HƯỚNG ......................................................................................52 4. TOOLBAR ............................................................................................................53 4.1 Giới thiệu ....................................................................................................... 53 4.1 Tạo ToolBar ................................................................................................... 54 4.2 Thao tác với Toolbar ...................................................................................... 55 Bài tập của học viên ..................................................................................................56 Hướng dẫn thực hiện .................................................................................................56 Những trọng tâm cần chú ý: ......................................................................................69 Bài mở rộng và nâng cao ...........................................................................................69 Yêu cầu đánh giá kết quả học tập ..............................................................................70 BÀI 4 : ACTION PROVIDER, ĐIỀU KHIẺN TÌM KIẾM VÀ CÁC CHUYỂN HOẠT............................................................................................................................71 Mã BÀI: MĐ29 - 04 .....................................................................................................71 1. ACTION PROVIDER ...........................................................................................71 2. ĐIỀU KHIỂN TÌM KIẾM ....................................................................................72 3. PROPERTY ANIMATION ..................................................................................75 4 VIEW ANIMATION .............................................................................................76 4.1 Tween Animation ........................................................................................... 76 4.2 Frame Animation ........................................................................................... 77 5. DRAWABLE ANIMATION ................................................................................78 Bài tập của học viên ..................................................................................................79 Hướng dẫn thực hiện .................................................................................................79 Những trọng tâm cần chú ý: ......................................................................................88 Bài mở rộng và nâng cao ...........................................................................................89 Yêu cầu đánh giá kết quả học tập ..............................................................................89 BÀI 5: ASYNCTASK - THREAD - HANDLER ......................................................90 Mã BÀI: MĐ29 - 05 .....................................................................................................90 1. THREAD VÀ MULTITHREADING ...................................................................90 1.1 Thread ............................................................................................................ 90 1.2 Multithreading ................................................................................................ 91 1.3 Main Thread và UI Thread, Worker Thread. ................................................. 91 4
- 1.4 Hiện tượng ANR trong Android. .................................................................... 92 2. ASYNCTASK ...................................................................................................... 93 3. Handler .................................................................................................................. 96 3.1 Giới thiệu ........................................................................................................ 96 3.2 Cách sử dụng Handler .................................................................................... 97 Bài tập thực hành của sinh viên ................................................................................ 98 Hướng dẫn thực hiện................................................................................................. 99 Những trọng tâm cần chú ý: ................................................................................... 100 Bài mở rộng và nâng cao ........................................................................................ 101 Yêu cầu đánh giá kết quả học tập ........................................................................... 101 BÀI 6: SERVICE - BROADCAST RECEIVER VÀ NOTIFICATION .............. 102 Mã BÀI: MĐ29 - 06................................................................................................... 102 1. SERVICE ............................................................................................................ 102 1.1 Giới thiệu ...................................................................................................... 102 1.2 Tạo Service ................................................................................................... 103 1.3 IntentService ................................................................................................. 105 2. BROADCAST RECEIVER ................................................................................ 106 2.1 Tạo BroadcastReceiver ................................................................................. 106 2.2 Đăng ký BroadcastReceiver ......................................................................... 106 3. NOTIFICATION ................................................................................................ 107 Bài tập thực hành của sinh viên .............................................................................. 110 Hướng dẫn thực hiện............................................................................................... 110 Những trọng tâm cần chú ý: ................................................................................... 139 Bài mở rộng và nâng cao ........................................................................................ 140 Yêu cầu đánh giá kết quả học tập ........................................................................... 140 BÀI 7: KHAI THÁC TÀI NGUYÊN INTERNET VÀ GIAO THỨC KẾT NỐI WEBSERVICE .......................................................................................................... 141 Mã BÀI: MĐ29 - 07................................................................................................... 141 1. TỔNG QUAN TÀI NGUYÊN INTERNET....................................................... 141 1.1 Tài nguyên Internet trên thiết bị di động ...................................................... 141 1.2 Các vấn đề khi kết nối Internet ..................................................................... 141 1.3 Các hình thức kết nối Internet ...................................................................... 142 1.4 Lớp khai báo kết nối ..................................................................................... 142 1.4.1 Thực hiện kết nối Internet (HTTP) ............................................................ 143 1.4.2 Thực hiện kết nối Internet (HTTPS) ......................................................... 143 2 SỬ DỤNG DỊCH VỤ DOWNLOAD MANAGER ............................................ 144 2.1.Giới thiêu đích vụ Download Manager ........................................................ 144 2.2 Khai báo và sử dụng Download Manager .................................................... 144 2.3 Tùy chỉnh thông báo cho Download Manager ............................................. 145 2.4 Chỉ định nơi lưu trữ ...................................................................................... 146 2.5 Truy vấn nội dung tải trong DownloadManager .......................................... 147 3. DỊCH VỤ WEBSERVICE ................................................................................. 147 3.1 Giới thiệu Web Service ................................................................................ 147 3.2 Các chuẩn dịch vụ WEB............................................................................... 148 4 CÁC LOẠI WEBSERVICE ................................................................................ 148 4.1. Giao thức HTTP .......................................................................................... 148 4.2 SOAP ............................................................................................................ 151 4.3 REST ............................................................................................................ 152 5
- 4.4 RESTful Service .......................................................................................... 152 5. XÂY DỰNG ỨNG DỤNG KẾT NỐI DỊCH VỤ WEB RESTFUL ..................153 5.2 Khai báo và kiểm soát các yêu cầu kết nối .................................................. 153 5.2 Thực hiên kết nối ......................................................................................... 153 5.3 Truy xuất dữ liệu trả về ................................................................................ 154 Bài tập thực hành của sinh viên...............................................................................155 Hướng dẫn thực hiện ...............................................................................................155 Những trọng tâm cần chú ý: ....................................................................................160 Bài mở rộng và nâng cao .........................................................................................160 Yêu cầu đánh giá kết quả học tập ............................................................................160 BÀI 8: THAO TÁC VỚI DỮ LIỆU XML VÀ JSON .............................................162 Mã BÀI: MĐ29 - 08 ...................................................................................................162 1. Đọc ghi dữ liệu XML ..........................................................................................162 1.1 Định dạng XML ........................................................................................... 162 1.2 Đọc ghi dữ liêu XML ................................................................................... 162 1.2.1. Ghi dữ liêu XML...................................................................................... 162 1.2.2 Đọc dữ liệu XML ...................................................................................... 165 2. ĐỌC GHI DỮ LIỆU JSON .................................................................................166 2.1 Định dạng JSON .......................................................................................... 166 2.2 Đọc ghi dữ liệu JSON .................................................................................. 167 2.2.1 Ghi dữ liệu JSON ...................................................................................... 168 2.2.2 Đọc dữ liệu JSON ..................................................................................... 169 Bài tập thực hành của sinh viên...............................................................................173 Hướng dẫn thực hiện ...............................................................................................173 Những trọng tâm cần chú ý: ....................................................................................185 Bài mở rộng và nâng cao .........................................................................................185 Yêu cầu đánh giá kết quả học tập ............................................................................186 BÀI 9: GOOGLE MAP VÀ GOOGLE CLOUD MESSAGING ..........................188 Mã BÀI: MĐ29 - 09 ...................................................................................................188 1. GOOGLE PLAY SERVICE SDK ......................................................................188 2. GOOGLE MAPS ANDROID API ......................................................................189 2.1. Tạo dự án Google Maps (Google Maps project) ........................................ 189 2.2 Google Maps Android API Key .................................................................. 190 2.3 GoogleMap & Xây dựng Đối tượng ............................................................ 191 2.4 Đồ họa trên Google Map .............................................................................. 193 2.4.1. Marker: ..................................................................................................... 193 2.4.2. InfoWindow: ............................................................................................ 194 2.4.3. Shape: ....................................................................................................... 194 3. Giới thiệu Google Cloud Messaging ...................................................................197 4. CẤU HÌNH CHO GOOGLE CLOUD MESSAGING .......................................198 4.1 Đăng ký dịch vụ GCM ................................................................................. 198 4.2 Cấu hình môi trường hoạt đông cho GCM .................................................. 201 4.3 Chuẩn bị máy ảo với Google API: ............................................................... 201 4.4 Tạo Project để đăng ký GCM ...................................................................... 202 4.5 Sử dụng “backend” trong Android Studio ................................................... 203 Bài tập thực hành của sinh viên...............................................................................209 Hướng dẫn thực hiện ...............................................................................................209 Những trọng tâm cần chú ý: ....................................................................................217 6
- Bài mở rộng và nâng cao ........................................................................................ 217 Yêu cầu đánh giá kết quả học tập ........................................................................... 217 BÀI 10: CÁC ĐIỀU KHIỂN ĐA TRUYỀN THÔNG ............................................ 219 Mã BÀI: MĐ29 - 10................................................................................................... 219 1. MEDIA PLAYER ............................................................................................... 219 1.1 Giới thiệu ...................................................................................................... 219 1.2 Xây dựng MediaPlayer Audio ...................................................................... 219 1.3 Xây dựng MediaPlayer Video ...................................................................... 220 1.4 Các điều khiển trên MediaPlayer ................................................................. 221 2. THU ÂM THANH VÀ HÌNH ẢNH (RECODING) .......................................... 222 3. CAMERA ........................................................................................................... 224 3.1 Điều khiển chụp hình với Camera ................................................................ 224 3.2 Lưu tập tin Media vào MediaStore ............................................................... 226 Bài tập thực hành của sinh viên .............................................................................. 227 Hướng dẫn thực hiện............................................................................................... 228 Những trọng tâm cần chú ý: ................................................................................... 243 Bài mở rộng và nâng cao ........................................................................................ 243 Yêu cầu đánh giá kết quả học tập ........................................................................... 243 BÀI 11: TELEPHONE & SMS VÀ BỘ CẢM BIẾN ............................................. 245 Mã BÀI: MĐ29 - 11................................................................................................... 245 1. TELEPHONE ..................................................................................................... 245 2. SMS 248 3. Giới thiệu sơ lược về cảm biến ........................................................................... 251 4. Lấy thông tin và điều khiển cảm biến ................................................................. 253 5 XỬ LÝ THÔNG TIN MỘT SỐ CẢM BIẾN ...................................................... 254 5.1 Accelerometer ............................................................................................... 254 5.2 Near Field Communacation Sensor (NFC) .................................................. 255 Bài tập thực hành của sinh viên .............................................................................. 257 Hướng dẫn thực hiện............................................................................................... 257 Những trọng tâm cần chú ý: ................................................................................... 263 Bài mở rộng và nâng cao ........................................................................................ 263 Yêu cầu đánh giá kết quả học tập ........................................................................... 263 TÀI LIỆU THAM KHẢO ........................................................................................ 266 7
- GIÁO TRÌNH MÔN HỌC/MÔ ĐUN Tên môn học/mô đun: LẬP TRÌNH THIẾT BỊ DI ĐỘNG 2 Mã môn học/mô đun: MĐ 29 Vị trí, tính chất, ý nghĩa và vai trò của mô đun Vị trí: là mô đun được bố trí giảng dạy dạy ngay từ đầu khóa học, trước khi học các môn chuyên môn nghề như: Quản trị mạng, Quản trị cơ sở dữ liệu, Thiết kế Web với ASP.NET, Lập trìnhọpython, Xây dựng phần mềm quản lý dữ liệu (Bán hàng/ Nhân sự/ Khách sạn),... Tính chất của mô đun: là mô đun bắt buộc thuộc chuyên môn nghề của Bài trình đào tạo Cao đẳng Ứng dụng phần mềm. Ý nghĩa và vai trò: Đây là môn học cơ sở ngành của ngành ứng dụng phần mềm, cung cấp cho sinh viên các kiến thức cơ bản về bảo mật hệ thống mạng để làm nền tản cho việc bảo mật giải quyết các vấn đề cần thiết. Vai trò: Giáo trình “Lập trình thiết bị di động 2” nhằm cung cấp cho sinh viên những kiến thức cơ bản về phương pháp và kỹ thuật đo lường các đại lượng vật lý. Mục tiêu của môn học: Sau khi học xong mô đun này học viên có năng lực - Kiến thức: Truy xuất tài nguyên dùng chung trên thiết bị Xây dựng ứng dụng với cơ chế chia sẻ tài nguyên Mô hình tổ chức dữ liệu theo cấu trúc cơ sở dữ liệu Tối ưu hoá trải nghiệm người dùng với cơ chế sắp xếp bố cục giao diện, chuyển hoạt và tuỳ chỉnh hiển thị điều khiển Tăng tốc ứng dụng với các luồng xử lý khác nhau Xây dựng chế độ làm việc ngầm cho ứng dụng Xây dựng ứng dụng theo mô hình MVC Thiết lập nhận và gửi thông báo cho ứng dụng Một trường hợp kiểm thử không tốt (không thành công) là một trường hợp mà khả năng tìm thấy những lỗi chưa biết đến là rất ít. Khai thác các dịch vụ Internet; Xây dựng ứng dụng bản đồ với Google Map; Sử dụng các bộ cảm biến và các bộ kết nối không dây; Xây dựng ứng dụng giải trí đa phương tiện; Kết nối với các hệ thống khác thông qua WebService. - Kỹ năng: Triển khai truy xuất tài nguyên dùng chung trên thiết bị Xây dựng ứng dụng với cơ chế chia sẻ tài nguyên Triển khai tối ưu hoá trải nghiệm người dùng với cơ chế sắp xếp bố cục giao diện, chuyển hoạt và tuỳ chỉnh hiển thị điều khiển Tăng tốc ứng dụng với các luồng xử lý khác nhau Xây dựng chế độ làm việc ngầm cho ứng dụng Xây dựng ứng dụng theo mô hình MVC Thiết lập nhận và gửi thông báo cho ứng dụng Khai thác các dịch vụ Internet; 8
- Xây dựng ứng dụng bản đồ với Google Map; Sử dụng các bộ cảm biến và các bộ kết nối không dây; Xây dựng ứng dụng giải trí đa phương tiện; Kết nối với các hệ thống khác thông qua WebService. - Năng lực tự chủ và trách nhiệm: Nghiêm túc, tỉ mỉ trong việc tiếp nhận kiến thức. Chủ động, tích cực trong thực hành và tìm kiếm nguồn bài tập liên quan. Rèn luyện tính tổ chức, khoa học, hệ thống, chính xác, cẩn thận. Nội dung của mô đun: Thời gian (giờ) Thực Số hành, thí Tên các bài trong mô đun Tổng Lý Kiểm TT nghiệm, số thuyết tra thảo luận, bài tập 1 Bài 1: Lưu trữ dữ liệu – SQLITE 8 2 6 2 Bài 2: Quản lý dữ liệu với Content 8 2 6 Provider 3 Bài 3: Menu - Action Bar - Toolbar 4 1 3 4 Bài 4 : Action Provider, điều khiẻn tìm 4 1 2 1 kiếm và các chuyển hoạt 5 Bài 5: Asynctask - Thread - Handler 8 1 7 6 Bài 6: Service - Broadcast Receiver và 4 1 3 Notification 7 Bài 7: Khai thác tài nguyên internet và 8 1 7 giao thức kết nối Webservice 8 Bài 8: Thao tác với dữ liệu XML và 8 1 6 1 JSON 9 Bài 9: Google Map và Google Cloud 8 2 6 Messaging 10 Bài 10: Các điều khiển đa truyền thông 8 2 6 11 Bài 11: Telephone & Sms và bộ cảm 7 1 5 1 biến Tổng 75 15 57 3 9
- BÀI 1: LƯU TRỮ DỮ LIỆU – SQLITE Mã BÀI: MĐ29-01 Giới thiệu Những ứng dụng cần sử dụng khối lượng dữ liệu lớn hơn, chúng ta sẽ cần cách lưu trữ khác. Và đặc biệt là với dạng dữ liệu có cấu trúc, cần truy cập sau này theo dạng truy vấn thì không gì thích hợp hơn cơ sở dữ liệu (Database).. Trong phần này chúng ta cùng điểm qua về DAO (Data Access Object). DAO có nhiệm vụ xử lý kết nối với Database để truy cập và chỉnh sửa dữ liệu. DAO cũng có nhiệm vụ chuyển đổi từ đối tượng trong database thành đối tượng Java tương ứng. Tuy nhiên sử dụng DAO không phải lúc nào cũng hợp lý. Đôi khi dùng trực tiếp thẳng vào database, hoặc sử dụng Content Provider thì tốt hơn (vì đỡ phải tạo model).. Mục tiêu: - Trình bày được khái niệm cơ sở dữ liệu - Hiểu và thực hiện được việc xây dựng cơ sở dữ liệu trên SQLITE - Thực hiện được các truy vấn dữ liệu trên SQLITE - Thực hiện được các sắp xếp trên cơ sở dữ liệu - Có được tính chủ động, khoa học, cẩn thận, tỉ mỉ, chính xác. Nội dung chính: 1. KHÁI NIỆM CƠ SỞ DỮ LIỆU (DATABASE CONCEPTS) Dữ liệu là những sự kiện có thể ghi lại được và có ý nghĩa. Một cơ sở dữ liệu (CSDL) là một tập hợp dữ liệu có liên quan với nhau, được lưu trữ trên máy tính, có nhiều người sử dụng và được tổ chức theo một mô hình. Một CSDL biểu thị một khía cạnh nào đó của thế giới thực. Thông tin được đưa vào trong CSDL tạo thành một không gian CSDL hoặc một “thế giới nhỏ” (miniworld). Một CSDL là một tập hợp dữ liệu liên kết với nhau một cách logic và mang một ý nghĩa nào đó. Một CSDL được thiết kế và được phổ biến cho một mục đích riêng. Một hệ quản trị cơ sở dữ liệu là một tập chương trình giúp cho người sử dụng tạo ra, duy trì và khai thác CSDL. Người ta gọi cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu bằng một thuật ngữ chung là hệ cơ sở dữ liệu. Hệ quản trị cơ sở dữ liệu (tiếng Anh: Database Management System - DBMS), là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu. Cụ thể, các chương trình thuộc loại này hỗ trợ khả năng lưu trữ, sửa chữa, xóa và tìm kiếm thông tin trong một CSDL. Có rất nhiều loại hệ quản trị CSDL khác nhau: từ phần mềm nhỏ chạy trên máy tính cá nhân cho đến những hệ quản trị phức tạp chạy trên một hoặc nhiều siêu máy tính. Tuy nhiên, đa số hệ quản trị CSDL trên thị trường đều có một đặc điểm chung là sử dụng ngôn ngữ truy vấn theo cấu trúc mà tiếng Anh gọi là Structured Query Language (SQL). Các hệ quản trị CSDL phổ biến được nhiều người biết đến là MySQL, Oracle, PostgreSQL, SQL Server, DB2, Infomix, v.v... Phần lớn các hệ quản trị CSDL kể trên hoạt động tốt trên nhiều hệ điều hành khác nhau như Linux, Unix và MacOS ngoại trừ SQL Server của Microsoft chỉ chạy trên hệ điều hành Windows. 2. GIỚI THIỆU SQLITE SQLite là cơ sở dữ liệu mở được viết dưới dạng thư viện tích hợp nhúng vào Android, hỗ trợ các đặc điểm về quan hệ chuẩn của cơ sở dữ liệu như cú pháp, transaction, các câu lệnh. SQLite được sử dụng rộng rãi trong các ứng dụng di động trên Android, iOS, ... Mozilla Firefox cũng sử dụng SQLite để lưu trữ các dữ liệu về cấu hình. 10
- Với bộ thư viện được tích hợp sẵn SQLite sẽ giúp các lập trình viên có thể lưu trữ và phục hồi dữ liệu bất cứ lúc nào. Tuy chỉ là phiên bản rút gọn nhưng SQLite có thể đáp ứng được hầu hết các nhu cầu về xử lý dữ liệu. Tính linh động trong SQLite cũng giúp ta thể kiểm soát được các thông tin dữ liệu. Sử dụng SQLite không yêu cầu về thiết lập bất cứ cơ sở dữ liệu hoặc đòi hỏi quyền admin. SQLite hỗ trợ các kiểu dữ liệu : TEXT, INTEGER, REAL. Đường dẫn của cơ sở dữ liệu: DATA/data//databases/FILENAME Thể hiện dữ liệu ở dạng bảng quan hệ: Cột: thể hiện trường dữ liệu (hoặc thuộc tính dữ liệu). Dòng: một thể hiện dữ liệu. word app id frequency Locale _ID mapreduce userl 100 en_US 1 precompiler user14 200 fr_FR 2 applet user2 225 fr_CA 3 const userl 255 pt_BR 4 Int user5 100 en_UK 5 Mặc định mỗi ứng dụng sẽ được cấp phát một thư mục cho việc lưu trữ cơ sở dữ liệu và nó chỉ có thể được dùng bởi ứng dụng đó. Nếu muốn chia sẻ dữ liệu dùng chung giữa các ứng dụng ta có thể sử dụng Content Provider. 3. XÂY DỰNG CƠ SỞ DỮ LIỆU VỚI SQLITE 3.1 Tạo Cơ sở dữ liệu Tạo cơ sở dữ liệu thông qua lớp SQLiteOpenHelper. SQLiteOpenHelper là một lớp ảo, SQLiteOpenHelper giúp tạo các cơ sở dữ liệu dùng SQLite (vì SQLite không hỗ trợ các phương thức khởi tạo cơ sở dữ liệu). Vậy làm sao để sử dụng được SQLiteOpenHelper? Vì SQLiteOpenHelper là một lớp ảo nên ta cần khai báo một lớp khác kế thừa lớp này. SQLiteOpenHelper thực hiện các phương thức cần thiết cho phép khởi tạo, nâng cấp cơ sở dữ liệu. Tạo đối tượng để truy cấp cơ sở dữ liệu (Read và Write). SQLiteDatabase cung cấp phương thức insert(), update(), delete(), hoặc execSQL() cho phép thực hiện truy xuất dữ liệu. Override phương thức onCreate() để tạo cơ sở dữ liệu. Override phương thức onUpgrade() để nâng cấp cơ sở dữ liệu. Lớp SQLiteOpenHelper cung cấp 2 phương thức getReadableDatabase() và getWriteableDatabase() để trả về đối tượng SQLiteDatabase. Ví dụ: Tạo một CSDL có tên: COUNTRY_DB Trong đó: Tạo một Table có tên: COUNTRY. Table COUNTRY có 3 cột là: _id, enName và viName với _id là khóa chính và có giá trị tự động tăng. 11
- public class MySQLiteHelper extends SQLiteOpenHelper { public static final String DB_NAME = "COUNTRY_DB"; public static final String TABLE_NAME = "COUNTRY "; public static final String COL_ID = "_id"; public static final String COL_EN_NAME = "enName"; public static final String COL_VI_NAME = "viName"; public static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + COL_ID + " integer primary key autoincrement, " + COL_EN_NAME + " text not null, " + COL_VI_NAME + " text not null);";. public MySQLiteHelper(Context context) { super(context, DB_NAME, null, 1); } } Lưu ý: Hàm khởi tạo có các thông số sau: Context: Biến ngữ cảnh. DB_NAME: Tên của cơ sở dữ liệu. CursorFactory: Đôi lúc chúng ta có thể extend lớp cursor để kế thừa một số phương thức và truy vấn. Trong trường hợp đó, ta dùng một instance của CursorFactory để tham chiếu đến lớp chúng ta tạo thay cho mặc định. Khi dùng mặc định thì ta để nó null. Version: Version của cơ sở dữ liệu. Tiến hành tạo CSDL trong hàm onCreate(): @Override public void onCreate(SQLiteDatabase db) { Log.d("SQLite", "On Create Database"); //Tạo Table với câu lệnh execSQL db.execSQL(CREATE_TABLE); } ^Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } 3.2 Mở Cơ sở dữ liệu Dùng cú pháp getReadableDatabase() và getWriteableDatabase() để trả về đối tượng SQLiteDatabase cần sử dụng. SQLiteDatabase là đối tượng để truy cập cơ sở dữ liệu (Read và Write). SQLiteDatabase cung cấp phương thức insert(), update(), delete(), hoặc execSQL() cho phép thực hiện truy xuất dữ liệu. MySQLiteHelper myHelper = new MySQLiteHelper(context); SQLiteDatabase database; try{ database = myHelper.getWritableDatabase(); }catch(SQLiteException ex){ database = myHelper.getReadableDatabase(); } Nếu cơ sở dữ liệu đã tồn tại thì lớp SQLiteOpenHelper sẽ không tạo thêm mà chỉ mở kết nối đến cơ sở dữ liệu đó. 12
- o Đóng Cơ sở dữ liệu public void close(){ myHelper.close(); } 4. TRUY VẤN DỮ LIỆU 4.1 Truy vấn (Query) 4.1.1 Truy vấn với câu lệnh SQL Sử dụng phương thức rawQuery() của lớp SQLiteDatabase. Phương thức rawQuery() nhận vào một giá trị chuỗi là câu lệnh SQL dùng để truy vấn dữ liệu và trả ra một đối tượng Cursor. String queryStr = “SELECT * FROM COUNTRY WHERE _id=? AND enName=?”; Cursor cursor = database.rawQuery(queryStr, new String[]{“1”,”Vietnam”}); Cú pháp truy xuất dữ liệu trong câu lệnh SQL: 1. Phát biểu truy vấn SQL có dạng: SELECT {Tên trường cần truy vấn, * nếu lấy tất cả các trường} FROM {Tên Table} WHERE {Biểu thức điều kiện} 2. SELECT dùng để đọc thông tin từ cơ sở dữ liệu theo trường hợp quy định hay những biểu thức cho trường hợp đó. 3. FROM chỉ ra tên một bảng hay những bảng có liên quan cần truy vấn thông tin. 4. WHERE để tạo nên điều kiện cần lọc mẩu tin theo tiêu chuẩn được định nghĩa. Thông thường, WHERE dùng cột (trường) để so sánh với giá trị cột khác, hay biểu thức chứa cột (trường) bất kỳ có trong bảng (table). 13
- SELECT * FROM T; SELECT Cl FROM T Hình 1.1. Ví dụ truy vấn với câu lệnh SELECT. - Các phép toán so sánh trong câu lệnh SQL: > Lớn WHERE _id>10; < : nhỏ hơn WHERE _id= Lớn hơn hoặc bằng WHERE _id>=10;
- moveToNext(). moveToPosition(intposition)... như được giới thiệu ở Bài 2. Cursor: 1. Đối tượng dữ liệu được trả về khi thực hiện truy vấn dữ liệu trong cơ sở dữ liệu của SQLite hoặc Content Provider. 2. Thể hiện dữ liệu ở dạng bảng quan hệ : ■ Cột: thể hiện trường dữ liệu (hoặc thuộc tính dữ liệu). ■ Dòng: một thể hiện dữ liệu. Cursor cursor = database.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy); String table: tên của bảng cần truy vấn. String[] columns: danh sách các cột sẽ trả về dữ liệu. String selection: chứa các điều kiện truy vấn. String[] selectionArgs: danh sách các tham số phụ cho câu điều kiện. String[] groupBy: gom nhóm các cột kết quả. String[] having: bộ lọc theo điều kiện. String[] orderBy: sắp xếp theo mảng cột được chỉ định. Ví dụ: - Sử dụng phương thức query(), lấy ra tên tiếng Anh và tên tiếng Việt của dòng có _id là 1. String selectedColumns = new String[]{ COL_EN_NAME, COL_VI_NAME}; Cursor c = database.query(TABLE_NAME, selectedColumns, “_id=?”, new String[]{“1”}, null, null, null); if (c.moveToFirst()) { while (!c.isAfterLast()) { String enName = c.getString(c.getColumnIndex(selectedColumns[0])); String viName = c.getString(c.getColumnIndex(selectedColumns[1])); c.moveToNext(); } } 4.2 Quản lý Lớp SQLiteDatabase cung cấp các phương thức như: insert(), update(), delete() hoặc execSQL() cho phép người dùng có thể quản lý và truy xuất dữ liệu. 4.2.1 Insert Tạo một dòng mới để insert dữ liệu: Contentvalues newValues = new ContentValues(); - Gán giá trị vào mỗi cột trong dòng vừa tạo: newValues.put(COLUMN_NAME,values); - Ví dụ: newValues.put(COL_EN_NAME, “Germany”); newValues.put(COL_VI_NAME, “Đức”); //Thêm dòng đó vào database database.insert(TABLE_NAME, null, newValues); 4.2.2 Update - Tạo một dòng mới để update dữ liệu: ContentValues newValues = new ContentValues(); 15
- - Gán giá trị vào mỗi cột trong dòng vừa tạo: newValues.put(COLUMN_NAME, values); - Ví dụ: newValues.put(COL_EN_NAME,”Germany2”); o Cập nhật lại dòng vừa tạo với đúng mệnh đề WHERE: String where = “_id=” + rowId; database.update(TABLE_NAME, newValues, where, null); 4.2.3 Delete - Sử dụng câu truy vấn delete truyền vào tên bảng và chỉ số của hàng cần xóa trong mệnh đề WHERE. - Nếu mệnh đề WHERE không có sẽ thực hiện xóa tất cả các dòng: database.delete(TABLE_NAME, “_id=” + rowID, null); 5. SẮP XẾP DỮ LIỆU 5.1 Truy vấn sắp xếp Thông thường trong khi truy vấn mẩu tin từ bảng dữ liệu, kết quả hiển thị sắp xếp theo chiều tăng hay giảm dựa trên ký tự ALPHABET. Nhưng bạn cũng có thể sắp xếp theo một tiêu chuẩn bất kỳ . Cú pháp cho mệnh đề ORDER BY cùng với trạng thái tăng dần (ASCENDING) hoặc giảm dần (DESCENDING): 5.1.1 Tăng dần (ASCENDING) ORDER BY columnName ASC ORDER BY columnName1 + columnName2 ASC - Ví dụ: o Truy vấn với câu lệnh SQL: SELECT * FROM COUNTRY ORDER BY enName ASC o Truy vấn với cú pháp hàm: String orderBy = myHelper.COL_EN_NAME + " ASC"; database.query(TABLE_NAME, null, null, null, null, orderBy); 5.1.2 Giảm dần (DESCENDING) ORDER BY columNname DESC ORDER BY columNname1 + columnName2 DESC - Ví dụ: o Truy vấn với câu lệnh SQL: SELECT * FROM COUNTRY ORDER BY enName DESC o Truy vấn với cú pháp hàm: String orderBy = myHelper.COL_VI_NAME + " DESC";database.query(TABLE_NAME, null, null, null, null, orderBy); 5.2 Truy vấn gom nhóm Ví dụ minh họa: o Ta có CSDL như sau: 16
- Hình 1.1. CSDL mẫu + Gom nhóm các bài hát có MaSo lớn hơn 55500 bằng cú pháp GROUP BY và mệnh đề HAVING với cú pháp: SELECT column1, column2 FROM table1, table2 WHERE [ conditions ] GROUP BY column1, column2 HAVING [ conditions ] + Có thể truy vấn với câu lệnh SQL: SELECT * FROM BAIHATCUTHE GROUP BY TenBaiHat HAVING MaSo>55500 + Hoặc truy vấn với cú pháp hàm: String groupBy = “BAIHATCUTHE”; String having = “Maso>55500” database.query(TABLE_NAME, null, null, groupBy, having, null); Kết quả: . 17
- Hình 1.2. Kết quả sau khi gom nhóm dữ liệu. - Để cấu hình nâng cao, chúng ta chọn Show Advanced Settings. - Chọn Finish để hoàn thành quá trình tạo máy ảo. Bài tập của học viên 1: Trình bày truy vấn dữ liệu với sqlite trong Android 2: Giới thiệu về SQLITE trong Android 3: Trình bày các bước truy vấn gom nhóm 4. Trình bày các bước xây dựng cơ sở dữ liệu với sqlite 5.Viết ứng dụng cơ bản sử dụng SQLite Hướng dẫn thực hiện 1: Trình bày truy vấn dữ liệu với sqlite trong Android, tham khảo mục 4 trong bài học trên 2: Giới thiệu về SQLITE trong Android, tham khảo mục 2 trong bài học trên 3: Trình bày các bước truy vấn gom nhóm, tham khảo mục 5.2 trong bài học trên 4. Trình bày các bước xây dựng cơ sở dữ liệu với sqlite, tham khảo mục 3 trong bài học trên 5. Viết ứng dụng cơ bản sử dụng SQLite Trong phần này chúng ta cùng điểm qua về DAO (Data Access Object). DAO có nhiệm vụ xử lý kết nối với Database để truy cập và chỉnh sửa dữ liệu. DAO cũng có nhiệm vụ chuyển đổi từ đối tượng trong database thành đối tượng Java tương ứng. Tuy nhiên sử dụng DAO không phải lúc nào cũng hợp lý. Đôi khi dùng trực tiếp thẳng vào database, hoặc sử dụng Content Provider thì tốt hơn (vì đỡ phải tạo model). Bước 1: Tạo project với các thông tin như hình vẽ (tên là SQLiteEx): Hình 1.3 Tạo New Project - Và chọn mức API là 13: 18
- Hình 1.4 Tạo lớp HowkSQLiteHelper Bước 2: Tạo lớp HowkSQLiteHelper kế thừa từ SQLiteOpenHelper: HowkSQLiteHelper.java package com.howkteam.sqliteex; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class HowkSQLiteHelper extends SQLiteOpenHelper { public static final String TABLE_PEOPLE = "people"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_PERSON = "person"; private static final String DATABASE_NAME = "people.db"; private static final int DATABASE_VERSION = 1; // Câu lệnh khởi tạo Database. private static final String DATABASE_CREATE = "create table " + TABLE_PEOPLE + "( " + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_PERSON + " text not null);"; public HowkSQLiteHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase database) { 19
- database.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(HowkSQLiteHelper.class.getName(), "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS " + TABLE_PEOPLE); onCreate(db); } } Lớp SQLiteOpenHelper này có tác dụng định nghĩa các câu truy vấn, cũng như làm nền móng cho việc giao tiếp với SQLite. Như các bạn đã thấy, chúng ta có truy vấn để tạo bảng: (DATABASE_CREATE), và tên các cột, bảng, file database. Đồng thời tạo class Person.java package com.howkteam.sqliteex; public class Person { private long id; private String name; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String comment) { this.name = comment; } // Will be used by the ArrayAdapter in the ListView @Override public String toString() { return name; } } Bước 3: Tạo lớp PeopleDataSource. Lớp này không kế thừa từ đâu cả, mà chỉ có nhiệm vụ xử lý dữ liệu từ Database nhờ sự trợ giúp của lớp Helper phía trên, và chứa các phương thức để lấy dữ liệu ra dạng Java object: package com.howkteam.sqliteex; import android.content.ContentValues; import android.content.Context; 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình: Lập trình C trong Windowns
69 p | 686 | 235
-
Giáo trình lập trình quản lý
278 p | 388 | 123
-
Giáo trình Lập trình Windows - Trần Minh Thái
69 p | 330 | 109
-
Giáo trình Lập trình của Windows - Trần Minh Thái
69 p | 233 | 77
-
Giáo trình Lập trình C trên Windows: Phần 2 - Nguyễn Đình Quyên, Mai Xuân Hùng (đồng biên soạn)
73 p | 158 | 50
-
Giáo trình Lập trình Android cơ bản: Phần 1
190 p | 55 | 35
-
Giáo trình Lập trình Android trong ứng dụng điều khiển: Phần 2
98 p | 18 | 15
-
Giáo trình Lập trình ghép nối máy tính - Nghề: Kỹ thuật lắp ráp và sửa chữa máy tính - Trình độ: Cao đẳng nghề (Tổng cục Dạy nghề)
132 p | 78 | 14
-
Giáo trình Sử dụng thiết bị văn phòng (Ngành: Tin học văn phòng - Trung cấp) - Trường Cao đẳng Cộng đồng Đồng Tháp
85 p | 26 | 12
-
Giáo trình lập trình C cho winform - 7
9 p | 94 | 9
-
Giáo trình Sử dụng thiết bị văn phòng - Trường CĐ Kinh tế - Kỹ thuật Bạc Liêu
79 p | 22 | 9
-
Giáo trình lập trình C cho winform - 4
10 p | 103 | 9
-
Giáo trình Lập trình thiết bị di động 1 (Nghề: Quản trị mạng - Trình độ: Cao đẳng) - Trường Cao đẳng nghề Cần Thơ
58 p | 18 | 8
-
Giáo trình Lập trình thiết bị di động 2 (Nghề: Quản trị mạng - Trình độ: Cao đẳng) - Trường Cao đẳng nghề Cần Thơ
83 p | 21 | 7
-
Giáo trình Lập trình PLC theo ngôn ngữ bậc thang: Phần 1
162 p | 43 | 7
-
Giáo trình Lập trình thiết bị di động 1 (Nghề: Ứng dụng phần mềm - Trình độ: Cao đẳng) - Trường Cao đẳng nghề Cần Thơ
132 p | 31 | 7
-
Giáo trình Lập trình CAD/CAM (Nghề: Vẽ và thiết kế trên máy tính - Cao đẳng): Phần 2 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
120 p | 35 | 6
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn