Nơi chứa csdl thường
nằm ở package chứa file chạy chính của chương trình
Ví dụ :
·
MainActivity
là file để chạy android do đó bạn có thể tìm thấy nơi lưu csdl ở : data/data/com.example.test
·
Sử dụng
file explorer trong eclipse để xem
·
Vào
window/Show view/Other/Android/File Explorer
·
Vì
chưa có csdl nên bạn không thể thấy được. Nếu có csdl thì sẽ tìm thấy ở data/data/com.example.test/databases/
Tạo lớp Database trong package Model
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataBase extends SQLiteOpenHelper {
public static final String TABLE_COMMENTS = "comments";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_COMMENT = "comment";
private static final String DATABASE_NAME = "commments.db";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table "
+ TABLE_COMMENTS + "(" + COLUMN_ID
+ " integer
primary key autoincrement, " + COLUMN_COMMENT
+ " text not
null);";
public DataBase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void createDataBase(){
this.getReadableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d("onUpgrade", "Upgrade");
}
public void createComments()
{
SQLiteDatabase database =
getReadableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_COMMENT, "oyeha");
database.insert(TABLE_COMMENTS, null,values);
}
public ArrayList<String> getAll(){
SQLiteDatabase database =
getReadableDatabase();
ArrayList<String> list = new ArrayList<String>();
Cursor c = database.rawQuery("SELECT * FROM Comments", null);
while(c.moveToNext()){
String comment =
c.getString(c.getColumnIndex("comment"));
list.add(comment);
}
c.close();
return list;
}
}
Lớp layout giao diện
<RelativeLayout 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"
tools:context=".MainActivity"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="23dp"
android:layout_marginTop="20dp"
android:text="Button"
android:onClick="createDataBase"/>
</RelativeLayout>
Lớp hiển thị giao diện
package
com.example.test;
import
java.util.ArrayList;
import
Model.DataBase;
import
android.os.Bundle;
import
android.app.Activity;
import
android.view.Menu;
import android.view.View;
public class
MainActivity extends Activity {
DataBase db = new
DataBase(MainActivity.this);
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void createDataBase(View view) {
db.createDataBase();
}
@Override
public boolean onCreateOptionsMenu(Menu
menu) {
// Inflate the menu; this adds items
to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main,
menu);
return true;
}
}
Câu lệnh tạo bảng DATABASE_CREATE với khóa chính tự động tăng
Giải thích 1:
super(context, DATABASE_NAME, null, DATABASE_VERSION);
DATABASE_NAME: tên csdl mà bạn đặt
DATABASE_VERSION: khi thay đổi DATABASE_VERSION thì khi gọi this.getReadableDatabase()hàm onUpgrade()được gọi. Hàm upgrade dùng để chỉnh sửa lại csdl của bạn
khi có thay đổi mới từ chương trình
Giải thích 2:
- Mỗi chương trình thì sẽ có
một nơi để chứa csdl riêng của nó. Ví dụ ở đây csdl sẽ được lưu trong
data/data/com.example.test dựa theo tên package chứa giao diện hiển thị
- Khi hàm this.getReadableDatabase() trong
createDatabase() được chạy thì nó sẽ chạy vào hàm onCreate()
- Hàm này sẽ tạo ra một thư
mục databases và trong thư mục này chứa
database của bạn. Như vậy nó sẽ tạo ra cho bạn data/data/com.example.test/databases/”tên
database của bạn”. ( trong ví dụ này thì nó sẽ tạo ra thêm databases/comments.db trong data/data/com.example.test/)
- onCreate chỉ được gọi khi
chưa tồn tại csdl mặc định của chương trình. Ví dụ ở đây nếu đã có
databases/comments.db thì hàm onCreate này sẽ không chạy nữa
- Khi đã có database rồi thì
sử dụng sql để tạo bảng thôi
Xem hàm createComments()
Giải thích:
·
Để sử dụng được csdl phải mở nó ra trước nên
dùng hàm this.getReadableDatabase()
hoặc this.getWritableDatabase();
COLUMN_COMMENT
: tên cột
Oyeha : nội
dung của cột COLUMN_COMMENT
TABLE_COMMENTS :
tên bảng csdl
Xem hàm getAll()
·
Để sử dụng được csdl phải mở nó ra trước nên
dùng hàm this.getReadableDatabase()
hoặc this.getWritableDatabase();
Xem hàm getAll()
|