स्वीकार किए जाते हैं जवाब एक समाधान प्रदान करता है, लेकिन यह केवल आंशिक रूप से सही है। नीचे पोस्ट की गई कक्षा को देखें। यह ग्रीनडाओ के ओपनहेल्पर वर्ग का विस्तार है। नीचे यह आपके उपयोग का एक उदाहरण है और आप अपने स्क्लाइट डेटाबेस की प्रति प्रबंधित करने के लिए OpenHelper या DevOpenHelper की बजाय इसका उपयोग कैसे कर सकते हैं।
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();
}
}
}
तो यहाँ
एक उदाहरण है की यह उपयोग है:
DatabaseOpenHelper helper = new DatabaseOpenHelper(this, "db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
स्रोत
2012-11-01 03:00:51
www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ इस –
मैंने पढ़ा '' SqliteOpenHelper वर्ग, से एक डाटाबेस बनाना की बुनियादी रास्ता पता इसकी सिर्फ इतना है कि मैं इस '' ORM' GreenDao' बुलाया उपकरण का उपयोग करने की जरूरत है, और यह कैसे अपने पुस्तकालय –
@SomeoneSomewhere अरे साथ एक ही बात करता है, तो आप किसी भी मिला ग्रीनडाओ का उपयोग कर SQLite डेटाबेस से निपटने के लिए उदाहरण या तरीका .. कृपया हमें बताएं .. – Akshay