Đối với ứng dụng của tôi, tôi tạo ra một lớp học để xác định cơ sở dữ liệu:
public final class MyApplicationDb
{
public static String DATABASE_NAME = "my_application_db";
public static int DATABASE_VERSION = 1;
public static final class Table1
{
public static String TABLE_NAME = "table1";
public static String ID = "_id";
public static String DAY = "day";
public static String NAME = "name";
public static String SOURCE = "source";
public static String[] COLUMNS = { ID, DAY, NAME, SOURCE };
}
public static final class Table2
{
public static String TABLE_NAME = "table2";
public static String ID = "_id";
public static String CONTACT_ID = "contactId";
public static String CONTACT_NAME = "contactName";
public static String LAST_WISH_DATE = "lastWishDate";
public static String[] COLUMNS = { ID, CONTACT_ID, CONTACT_NAME, LAST_WISH_DATE };
}
}
Và 2 kịch bản sql để tạo và cập nhật các db res/raw/db_create.sql
và res/raw/db_update.sql
/* db_create.sql */
create table table1(
_id integer primary key autoincrement,
day char(5) not null,
name varchar(64) not null,
source varchar(64) not null);
create table table2(
_id integer primary key autoincrement,
contactId integer not null,
contactName text not null,
lastWishDate char(10) null);
/* db_update.sql */
DROP TABLE IF EXISTS table1;
DROP TABLE IF EXISTS table2
Và Một lớp khác để tạo/cập nhật/truy cập cơ sở dữ liệu tương tự như NotesDbAdapter
ngoại trừ nó sử dụng tập lệnh sql để tạo/cập nhật cơ sở dữ liệu thay vì hằng số. (xem here để xem cách thực hiện điều đó)
Sự kiện onUpgrade kích hoạt một lần cho tất cả cơ sở dữ liệu hoặc cháy riêng cho từng lớp bảng? – Pentium10
'onUpgrade()' được kích hoạt khi Android phát hiện rằng 'DATABASE_VERSION' đã được tăng lên. Bạn có thể làm những gì bạn muốn bên trong. Chủ yếu là bạn xóa tất cả các bảng (xem kịch bản lệnh db_update.sql) và gọi 'onCreate()' để tạo lại cơ sở dữ liệu. – tbruyelle
Không nên tạo 1 MyApplicationDb và một vài lớp Table1 mới cho mỗi bảng? Trong C#, tôi đã tạo một lớp cho mỗi bảng mà tôi có, và tôi chưa bao gồm một adapter. – Pentium10