chào các bạn, bài hôm nay long sẽ giới thiệu với các bạn cách khởi tạo một database trên 1 thiết bị cục bộ (máy ảo, máy thật). nó sẽ rất có ích để quản lý chính dữ liệu của người dùng.
1) source code demo:
click vào đây để download source code demo.
2) giới thiệu: cũng như trên os của iphone, android cũng được gắn một chuẩn chương trình gọi là "sqlite3" dùng để:
- khởi tạo mới 1 database
- xác định các table trong sql
- các truy vấn (queries)
- views
- thủ tục (triggers)
- chèn dòng trong table
- xóa dòng table
- cập nhật dòng table
- chạy truy vấn quản lý một tập tin database của sqlite.
3) sử dụng sqlite trong lập trình android
- sqlite thực hiện đầy đủ chuẩn sql-92 của sql (chuẩn sql-92 nếu rảnh có thể tự tìm hiểu)
- nó có hỗ trợ việc chạy triggers và cho phép hầu hết các truy vấn phức tạp
- sqlite không thực hiện các ràng buộc toàn vẹn tham chiếu thông qua mô hình ràng buộc khoá ngoại
- sqlite sử dụng một mô hình dữ liệu đánh máy thoải mái.
4) các chú ý:
- trong các ứng dụng thực tế, phải chú ý tới việc chia sẽ dữ liệu. ví dụ như người dùng này không thể truy cập xem dữ liệu người khác được ...
- chú ý gắn cờ khi muốn đăng ký việc viết dữ liệu vào data
<uses-permission android:name="android.permission.write_external_st orage" />
5) kiểm tra database khởi tạo thành công:
- các bạn hãy vào ddms và theo đường dẫn sau: data/data/<tên package lúc khởi tạo ứng dụng>/databases/
- ở đây nếu có tập tin database như tên bạn đặt là đã khởi tạo thành công, có thể kiểm tra ngày giờ lúc khởi tạo nằm ngay ở phía bên phải của tập tin database
- hướng dẫn cách xem dữ liệu trong database
cách xem và quản lý một tập tin sqlite đơn giản nhất
6) demo ví dụ hướng dẫn cách tạo database:
- strings.xml
Mã nguồn PHP:
[color=#000000]
[/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<resources> <string name="app_name">android demo read xml</string> <string name="parsed_data">http://android.vn
hướng dẫn bởi thanhlong90.it</string> <string name="tkmoi">tạo tài khoản mới</string> <string name="danh_sach">danh sách tk</string> </resources>
- activity_main.xml
Mã nguồn PHP:
[color=#000000]
[/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <textview android:id="@+id/textview1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="14dp" android:gravity="center" android:text="@string/parsed_data" android:textappearance="?android:attr/textappearancemedium" android:textstyle="bold" /> <button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/tkmoi" /> <button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/danh_sach" /> <textview android:id="@+id/textview2" android:layout_width="match_parent" android:layout_height="wrap_content" /> </linearlayout>
- mydatabase.java
Mã nguồn PHP:
[color=#000000]
package android[/color][color=#007700].[/color][color=#0000bb]vn[/color][color=#007700]; [/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]content[/color][color=#007700].[/color][color=#0000bb]contentvalues[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]content[/color][color=#007700].[/color][color=#0000bb]context[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]cursor[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]sqlexception[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]sqlite[/color][color=#007700].[/color][color=#0000bb]sqlitedatabase[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]sqlite[/color][color=#007700].[/color][color=#0000bb]sqliteopenhelper[/color][color=#007700]; public class [/color][color=#0000bb]mydatabase [/color][color=#007700]{ [/color][color=#ff8000]/*tên database*/ [/color][color=#007700]private static final [/color][color=#0000bb]string database_name [/color][color=#007700]= [/color][color=#dd0000]"db_user"[/color][color=#007700]; [/color][color=#ff8000]/*version database*/ [/color][color=#007700]private static final [/color][color=#0000bb]int database_version [/color][color=#007700]= [/color][color=#0000bb]1[/color][color=#007700]; [/color][color=#ff8000]/*tên tabel và các column trong database*/ [/color][color=#007700]private static final [/color][color=#0000bb]string table_account [/color][color=#007700]= [/color][color=#dd0000]"account"[/color][color=#007700]; public static final [/color][color=#0000bb]string column_id [/color][color=#007700]= [/color][color=#dd0000]"_id"[/color][color=#007700]; public static final [/color][color=#0000bb]string column_acc [/color][color=#007700]= [/color][color=#dd0000]"tentaikhoan"[/color][color=#007700]; public static final [/color][color=#0000bb]string column_password [/color][color=#007700]= [/color][color=#dd0000]"matkhau"[/color][color=#007700]; public static final [/color][color=#0000bb]string column_name [/color][color=#007700]= [/color][color=#dd0000]"hoten"[/color][color=#007700]; [/color][color=#ff8000]/*các đối tượng khác*/ [/color][color=#007700]private static [/color][color=#0000bb]context context[/color][color=#007700]; static [/color][color=#0000bb]sqlitedatabase db[/color][color=#007700]; private [/color][color=#0000bb]openhelper openhelper[/color][color=#007700]; [/color][color=#ff8000]/*hàm dựng, khởi tạo đối tượng*/ [/color][color=#007700]public [/color][color=#0000bb]mydatabase[/color][color=#007700]([/color][color=#0000bb]context c[/color][color=#007700]){ [/color][color=#0000bb]mydatabase[/color][color=#007700].[/color][color=#0000bb]context [/color][color=#007700]= [/color][color=#0000bb]c[/color][color=#007700]; } [/color][color=#ff8000]/*hàm mở kết nối tới database*/ [/color][color=#007700]public [/color][color=#0000bb]mydatabase open[/color][color=#007700]() [/color][color=#0000bb]throws sqlexception[/color][color=#007700]{ [/color][color=#0000bb]openhelper [/color][color=#007700]= new [/color][color=#0000bb]openhelper[/color][color=#007700]([/color][color=#0000bb]context[/color][color=#007700]); [/color][color=#0000bb]db [/color][color=#007700]= [/color][color=#0000bb]openhelper[/color][color=#007700].[/color][color=#0000bb]getwritabledatabase[/color][color=#007700](); return [/color][color=#0000bb]this[/color][color=#007700]; } [/color][color=#ff8000]/*hàm đóng kết nối với database*/ [/color][color=#007700]public [/color][color=#0000bb]void close[/color][color=#007700](){ [/color][color=#0000bb]openhelper[/color][color=#007700].[/color][color=#0000bb]close[/color][color=#007700](); } [/color][color=#ff8000]/*hàm createdata dùng để chèn dữ mới dữ liệu vào database*/ [/color][color=#007700]public [/color][color=#0000bb]long createdata[/color][color=#007700]([/color][color=#0000bb]string tendn[/color][color=#007700], [/color][color=#0000bb]string matkhau[/color][color=#007700]) { [/color][color=#0000bb]contentvalues cv [/color][color=#007700]= new [/color][color=#0000bb]contentvalues[/color][color=#007700](); [/color][color=#0000bb]cv[/color][color=#007700].[/color][color=#0000bb]put[/color][color=#007700]([/color][color=#0000bb]column_acc[/color][color=#007700], [/color][color=#0000bb]tendn[/color][color=#007700]); [/color][color=#0000bb]cv[/color][color=#007700].[/color][color=#0000bb]put[/color][color=#007700]([/color][color=#0000bb]column_password[/color][color=#007700], [/color][color=#0000bb]matkhau[/color][color=#007700]); [/color][color=#0000bb]cv[/color][color=#007700].[/color][color=#0000bb]put[/color][color=#007700]([/color][color=#0000bb]column_name[/color][color=#007700], [/color][color=#dd0000]"nodata"[/color][color=#007700]); return [/color][color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]insert[/color][color=#007700]([/color][color=#0000bb]table_account[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]cv[/color][color=#007700]); } [/color][color=#ff8000]/*hàm getdata trả về toàn bộ dữ liệu của table account của database dưới 1 chuỗi*/ [/color][color=#007700]public [/color][color=#0000bb]string getdata[/color][color=#007700]() { [/color][color=#0000bb]string[/color][color=#007700][] [/color][color=#0000bb]columns [/color][color=#007700]= new [/color][color=#0000bb]string[/color][color=#007700][] {[/color][color=#0000bb]column_id[/color][color=#007700],[/color][color=#0000bb]column_acc[/color][color=#007700],[/color][color=#0000bb]column_password[/color][color=#007700],[/color][color=#0000bb]column_name[/color][color=#007700]}; [/color][color=#0000bb]cursor c [/color][color=#007700]= [/color][color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]query[/color][color=#007700]([/color][color=#0000bb]table_account[/color][color=#007700], [/color][color=#0000bb]columns[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700]); [/color][color=#ff8000]/*if(c==null) log.v("cursor", "c is null");*/ [/color][color=#0000bb]string result[/color][color=#007700]=[/color][color=#dd0000]""[/color][color=#007700]; [/color][color=#ff8000]//getcolumnindex(column_id); là lấy chỉ số, vị trí của cột column_id ... [/color][color=#0000bb]int irow [/color][color=#007700]= [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getcolumnindex[/color][color=#007700]([/color][color=#0000bb]column_id[/color][color=#007700]); [/color][color=#0000bb]int in [/color][color=#007700]= [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getcolumnindex[/color][color=#007700]([/color][color=#0000bb]column_acc[/color][color=#007700]); [/color][color=#0000bb]int imk [/color][color=#007700]= [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getcolumnindex[/color][color=#007700]([/color][color=#0000bb]column_password[/color][color=#007700]); [/color][color=#0000bb]int ihoten [/color][color=#007700]= [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getcolumnindex[/color][color=#007700]([/color][color=#0000bb]column_name[/color][color=#007700]); [/color][color=#ff8000]//vòng lặp lấy dữ liệu của con trỏ [/color][color=#007700]for([/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]movetofirst[/color][color=#007700](); ![/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]isafterlast[/color][color=#007700](); [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]movetonext[/color][color=#007700]()){ [/color][color=#0000bb]result [/color][color=#007700]= [/color][color=#0000bb]result [/color][color=#007700]+[/color][color=#dd0000]" "[/color][color=#007700]+ [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getstring[/color][color=#007700]([/color][color=#0000bb]irow[/color][color=#007700]) + [/color][color=#dd0000]" - id:" [/color][color=#007700]+ [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getstring[/color][color=#007700]([/color][color=#0000bb]in[/color][color=#007700]) + [/color][color=#dd0000]" - pw:" [/color][color=#007700]+ [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getstring[/color][color=#007700]([/color][color=#0000bb]imk[/color][color=#007700]) + [/color][color=#dd0000]" - ten:" [/color][color=#007700]+ [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getstring[/color][color=#007700]([/color][color=#0000bb]ihoten[/color][color=#007700]) + [/color][color=#dd0000]"
"[/color][color=#007700]; } [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]close[/color][color=#007700](); [/color][color=#ff8000]//log.v("result", result); [/color][color=#007700]return [/color][color=#0000bb]result[/color][color=#007700]; } [/color][color=#ff8000]//---------------- class openhelper ------------------ [/color][color=#007700]private static class [/color][color=#0000bb]openhelper [/color][color=#007700]extends [/color][color=#0000bb]sqliteopenhelper [/color][color=#007700]{ [/color][color=#ff8000]/*hàm dựng khởi tạo 1 openhelper*/ [/color][color=#007700]public [/color][color=#0000bb]openhelper[/color][color=#007700]([/color][color=#0000bb]context context[/color][color=#007700]) { [/color][color=#0000bb]super[/color][color=#007700]([/color][color=#0000bb]context[/color][color=#007700], [/color][color=#0000bb]database_name[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]database_version[/color][color=#007700]); } [/color][color=#ff8000]/*tạo mới database*/ [/color][color=#007700]@[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void oncreate[/color][color=#007700]([/color][color=#0000bb]sqlitedatabase arg0[/color][color=#007700]) { [/color][color=#0000bb]arg0[/color][color=#007700].[/color][color=#0000bb]execsql[/color][color=#007700]([/color][color=#dd0000]"create table " [/color][color=#007700]+ [/color][color=#0000bb]table_account [/color][color=#007700]+ [/color][color=#dd0000]" (" [/color][color=#007700]+ [/color][color=#0000bb]column_id [/color][color=#007700]+ [/color][color=#dd0000]" integer primary key autoincrement, " [/color][color=#007700]+ [/color][color=#0000bb]column_acc [/color][color=#007700]+ [/color][color=#dd0000]" text not null, " [/color][color=#007700]+ [/color][color=#0000bb]column_password [/color][color=#007700]+ [/color][color=#dd0000]" text not null, " [/color][color=#007700]+ [/color][color=#0000bb]column_name [/color][color=#007700]+ [/color][color=#dd0000]" text not null);"[/color][color=#007700]); } [/color][color=#ff8000]/*kiểm tra phiên bản database nếu khác sẽ thay đổi*/ [/color][color=#007700]@[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onupgrade[/color][color=#007700]([/color][color=#0000bb]sqlitedatabase arg0[/color][color=#007700], [/color][color=#0000bb]int arg1[/color][color=#007700], [/color][color=#0000bb]int arg2[/color][color=#007700]) { [/color][color=#0000bb]arg0[/color][color=#007700].[/color][color=#0000bb]execsql[/color][color=#007700]([/color][color=#dd0000]"drop table if exists " [/color][color=#007700]+ [/color][color=#0000bb]table_account[/color][color=#007700]); [/color][color=#0000bb]oncreate[/color][color=#007700]([/color][color=#0000bb]arg0[/color][color=#007700]); } }}[/color]
- mainactivity.java
Mã nguồn PHP:
[color=#000000]
package android[/color][color=#007700].[/color][color=#0000bb]vn[/color][color=#007700]; [/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]os[/color][color=#007700].[/color][color=#0000bb]bundle[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]onclicklistener[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]button[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]textview[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]app[/color][color=#007700].[/color][color=#0000bb]activity[/color][color=#007700]; public class [/color][color=#0000bb]mainactivity [/color][color=#007700]extends [/color][color=#0000bb]activity [/color][color=#007700]{ private [/color][color=#0000bb]button dangkytk[/color][color=#007700], [/color][color=#0000bb]hienthi[/color][color=#007700]; private [/color][color=#0000bb]textview danhsachtk[/color][color=#007700]; private [/color][color=#0000bb]mydatabase database [/color][color=#007700]= new [/color][color=#0000bb]mydatabase[/color][color=#007700]([/color][color=#0000bb]this[/color][color=#007700]); private [/color][color=#0000bb]int i [/color][color=#007700]= [/color][color=#0000bb]0[/color][color=#007700]; @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void oncreate[/color][color=#007700]([/color][color=#0000bb]bundle savedinstancestate[/color][color=#007700]) { [/color][color=#0000bb]super[/color][color=#007700].[/color][color=#0000bb]oncreate[/color][color=#007700]([/color][color=#0000bb]savedinstancestate[/color][color=#007700]); [/color][color=#0000bb]setcontentview[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]layout[/color][color=#007700].[/color][color=#0000bb]activity_main[/color][color=#007700]); [/color][color=#0000bb]dangkytk [/color][color=#007700]= ([/color][color=#0000bb]button[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]button1[/color][color=#007700]); [/color][color=#0000bb]hienthi [/color][color=#007700]= ([/color][color=#0000bb]button[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]button2[/color][color=#007700]); [/color][color=#0000bb]danhsachtk [/color][color=#007700]= ([/color][color=#0000bb]textview[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]textview2[/color][color=#007700]); [/color][color=#0000bb]dangkytk[/color][color=#007700].[/color][color=#0000bb]setonclicklistener[/color][color=#007700](new [/color][color=#0000bb]onclicklistener[/color][color=#007700]() { @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onclick[/color][color=#007700]([/color][color=#0000bb]view v[/color][color=#007700]) { [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]open[/color][color=#007700](); [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]createdata[/color][color=#007700]([/color][color=#dd0000]"taikhoanthu" [/color][color=#007700]+ [/color][color=#0000bb]i[/color][color=#007700], [/color][color=#dd0000]"111"[/color][color=#007700]); [/color][color=#0000bb]i[/color][color=#007700]++; [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]close[/color][color=#007700](); } }); [/color][color=#0000bb]hienthi[/color][color=#007700].[/color][color=#0000bb]setonclicklistener[/color][color=#007700](new [/color][color=#0000bb]onclicklistener[/color][color=#007700]() { @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onclick[/color][color=#007700]([/color][color=#0000bb]view v[/color][color=#007700]) { [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]open[/color][color=#007700](); [/color][color=#0000bb]string ds [/color][color=#007700]= [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]getdata[/color][color=#007700](); [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]close[/color][color=#007700](); [/color][color=#0000bb]danhsachtk[/color][color=#007700].[/color][color=#0000bb]settext[/color][color=#007700]([/color][color=#0000bb]ds[/color][color=#007700]); } }); }}[/color]
7) video kết quả chạy demo:
mời các bạn xem tiếp phần 2 tại đây.
bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: android.vn
pass giải nén: http://android.vn
support: thanhlong90.it@gmail.com
chúc các bạn thành công!
Xe tải Veam VT260-1 tải trọng 1,9 tấn là mẫu xe mang kiểu dáng hoàn toàn khác biệt so với dòng xe phiên bản trước ấy của Veam là VT260-1. Dù đã ra mắt 2018 nhưng tới bây giờ VT260-1 vẫn được nhiều...
Đánh giá Xe Veam VT260 1.9 tấn