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!
Buồi giả Giống Thật Có Rung Ngoáy Strong Vibe một trong những dòng sản phẩm được chuộng bậc nhất trong phân khúc các loại đồ chơi dục tình với giá rẻ mà độ sướng không hề kém cạnh các sản phẩm đắt...
Phân khúc đồ chơi tình dục giá rẻ. cu giả cầm tay có rung ngoáy