Cơ sở dữ liệu của ứng dụng của tôi cần phải được lấp đầy nhiều dữ liệu, vì vậy trong thời gian onCreate()
, nó không chỉ tạo ra một số bảng sql hướng dẫn, có rất nhiều chèn. Giải pháp tôi chọn là để lưu trữ tất cả các hướng dẫn này trong một tệp sql nằm trong res/raw và được tải với Resources.openRawResource(id)
.Tạo cơ sở dữ liệu ứng dụng android với số lượng lớn dữ liệu
Nó hoạt động tốt nhưng tôi phải đối mặt với vấn đề mã hóa, tôi có một số dấu ngoặc kép nổi bật trong tệp sql xuất hiện không tốt trong đơn đăng ký của tôi. mã của tôi này để làm điều này:
public String getFileContent(Resources resources, int rawId) throws
IOException
{
InputStream is = resources.openRawResource(rawId);
int size = is.available();
// Read the entire asset into a local byte buffer.
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
// Convert the buffer into a string.
return new String(buffer);
}
public void onCreate(SQLiteDatabase db) {
try {
// get file content
String sqlCode = getFileContent(mCtx.getResources(), R.raw.db_create);
// execute code
for (String sqlStatements : sqlCode.split(";"))
{
db.execSQL(sqlStatements);
}
Log.v("Creating database done.");
} catch (IOException e) {
// Should never happen!
Log.e("Error reading sql file " + e.getMessage(), e);
throw new RuntimeException(e);
} catch (SQLException e) {
Log.e("Error executing sql code " + e.getMessage(), e);
throw new RuntimeException(e);
}
Giải pháp tôi thấy để tránh điều này là để tải các hướng dẫn sql từ một khổng lồ static final String
thay vì một tập tin, và tất cả nhân vật nổi bật xuất hiện tốt.
Nhưng không có cách nào thanh lịch hơn để tải hướng dẫn sql hơn một thuộc tính lớn static final String
với tất cả hướng dẫn sql?
Cảm ơn rất nhiều Dave – tbruyelle