Để thêm cột mới vào bảng bạn cần sử dụng ALTER
. Trong android, bạn có thể thêm cột mới bên trong onUpgrade()
.
Bạn có thể tự hỏi, làm thế nào onUpgrade()
sẽ thêm cột mới?
Khi bạn triển khai một lớp con của SQLiteOpenHelper
, bạn cần gọi hàm tạo lớp cha: super(context, DB_NAME, null, 1);
trong hàm tạo lớp của bạn. Ở đó tôi đã vượt qua 1
phiên bản.
Khi tôi thay đổi phiên bản 1
trên ( 2
hoặc cao hơn), onUpgrade()
sẽ được gọi. Và thực hiện các sửa đổi SQL mà tôi dự định làm. Hàm tạo lớp của tôi sau khi thay đổi phiên bản:
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 2);//version changed from 1 to 2
}
Các sửa đổi SQL sẽ kiểm tra như thế này, hàm tạo lớp siêu so sánh phiên bản của tệp db SQLite được lưu trữ với phiên bản mà tôi đã chuyển đến super()
. Nếu các số phiên bản này (trước đây và bây giờ) khác nhau onUpgrade()
sẽ được gọi.
Mã sẽ như thế này:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// add new columns to migrate to version 2
if (oldVersion < 2) {
db.execSQL("ALTER TABLE " + TABLE_NAME + "ADD COLUMN school VARCHAR(250)");
}
// add new columns to migrate to version 3
if (oldVersion < 3) {
db.execSQL("ALTER TABLE " + TABLE_NAME + "ADD COLUMN age INTEGER");
}
}