Câu trả lời được chấp nhận cung cấp giải pháp nhưng chỉ đúng một phần. Xem lớp tôi đã đăng bên dưới. Đây là phần mở rộng của lớp OpenHelper của greenDao. Dưới đây là một ví dụ về việc sử dụng nó và cách bạn có thể sử dụng nó thay vì OpenHelper hoặc DevOpenHelper để quản lý bản sao của cơ sở dữ liệu sqlite của bạn.
package com.example;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import com.example.R;
import com.example.DaoMaster.OpenHelper;
public class DatabaseOpenHelper extends OpenHelper {
private Context context;
private SQLiteDatabase sqliteDatabase;
private static String DB_PATH;
private static String DB_NAME;
public DatabaseOpenHelper(Context context, String name, CursorFactory factory) {
super(context, name, factory);
this.context = context;
this.DB_NAME = name;
this.DB_PATH = context.getString(R.string.DB_PATH);
try {
createDataBase();
} catch (Exception ioe) {
throw new Error("Unable to create database");
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
/** Open Database for Use */
public void openDatabase() {
String databasePath = DB_PATH + DB_NAME;
sqliteDatabase = SQLiteDatabase.openDatabase(databasePath, null,
(SQLiteDatabase.OPEN_READWRITE));
}
/** Close Database after use */
@Override
public synchronized void close() {
if ((sqliteDatabase != null) && sqliteDatabase.isOpen()) {
sqliteDatabase.close();
}
super.close();
}
/** Get database instance for use */
public SQLiteDatabase getSqliteDatabase() {
return sqliteDatabase;
}
/** Create new database if not present */
public void createDataBase() {
SQLiteDatabase sqliteDatabase = null;
if (databaseExists()) {
/* Check for Upgrade */
} else {
/* Database does not exists create blank database */
sqliteDatabase = this.getReadableDatabase();
sqliteDatabase.close();
copyDataBase();
}
}
/** Check Database if it exists */
private boolean databaseExists() {
SQLiteDatabase sqliteDatabase = null;
try {
String databasePath = DB_PATH + DB_NAME;
sqliteDatabase = SQLiteDatabase.openDatabase(databasePath, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
e.printStackTrace();
}
if (sqliteDatabase != null) {
sqliteDatabase.close();
}
return sqliteDatabase != null ? true : false;
}
/**
* Copy existing database file in system
*/
public void copyDataBase() {
int length;
byte[] buffer = new byte[1024];
String databasePath = DB_PATH + DB_NAME;
try {
InputStream databaseInputFile = this.context.getAssets().open(DB_NAME+".sqlite");
OutputStream databaseOutputFile = new FileOutputStream(databasePath);
while ((length = databaseInputFile.read(buffer)) > 0) {
databaseOutputFile.write(buffer, 0, length);
databaseOutputFile.flush();
}
databaseInputFile.close();
databaseOutputFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Vì vậy, đây là một ví dụ của nó là sử dụng:
DatabaseOpenHelper helper = new DatabaseOpenHelper(this, "db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
Nguồn
2012-11-01 03:00:51
www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ đọc –
tôi biết cách cơ bản của việc tạo ra một cơ sở dữ liệu từ lớp 'SqliteOpenHelper', nó chỉ là tôi cần sử dụng công cụ 'ORM' này được gọi là' GreenDao', và nó hoạt động như thế nào với thư viện –
@SomeoneSomewhere Hey, bạn có nhận được bất kỳ ví dụ hoặc cách để xử lý Cơ sở dữ liệu SQLite bằng GreenDAO..Xin vui lòng cho chúng tôi biết .. – Akshay