Added database file and handler
This commit is contained in:
parent
4af1f75cab
commit
da0cf6e6fb
BIN
SWADroid/assets/swadroid.sqlite
Normal file
BIN
SWADroid/assets/swadroid.sqlite
Normal file
Binary file not shown.
116
SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java
Normal file
116
SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java
Normal file
|
@ -0,0 +1,116 @@
|
|||
package es.ugr.swad.swadroid.model;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.SQLException;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
|
||||
public class DataBaseHelper extends SQLiteOpenHelper{
|
||||
//The Android's default system path of your application database.
|
||||
private static String DB_PATH = "/data/data/es.ugr.swad.swadroid/databases/";
|
||||
private static String DB_NAME = "swadroid";
|
||||
private SQLiteDatabase swadroidDataBase;
|
||||
private final Context context;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* Takes and keeps a reference of the passed context in order to access to the application assets and resources.
|
||||
* @param context
|
||||
*/
|
||||
public DataBaseHelper(Context context) {
|
||||
super(context, DB_NAME, null, 1);
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a empty database on the system and rewrites it with your own database.
|
||||
* */
|
||||
public void createDataBase() throws IOException{
|
||||
boolean dbExist = checkDataBase();
|
||||
if(dbExist){
|
||||
//do nothing - database already exist
|
||||
}else{
|
||||
//By calling this method and empty database will be created into the default system path
|
||||
//of your application so we are gonna be able to overwrite that database with our database.
|
||||
this.getReadableDatabase();
|
||||
try {
|
||||
copyDataBase();
|
||||
} catch (IOException e) {
|
||||
throw new Error("Error copying database");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the database already exist to avoid re-copying the file each time you open the application.
|
||||
* @return true if it exists, false if it doesn't
|
||||
*/
|
||||
private boolean checkDataBase(){
|
||||
SQLiteDatabase checkDB = null;
|
||||
try{
|
||||
String myPath = DB_PATH + DB_NAME;
|
||||
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
|
||||
}catch(SQLiteException e){
|
||||
//database does't exist yet.
|
||||
}
|
||||
|
||||
if(checkDB != null){
|
||||
checkDB.close();
|
||||
}
|
||||
return checkDB != null ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies your database from your local assets-folder to the just created empty database in the
|
||||
* system folder, from where it can be accessed and handled.
|
||||
* This is done by transferring bytestream.
|
||||
* */
|
||||
private void copyDataBase() throws IOException{
|
||||
//Open your local db as the input stream
|
||||
InputStream myInput = context.getAssets().open(DB_NAME);
|
||||
// Path to the just created empty db
|
||||
String outFileName = DB_PATH + DB_NAME;
|
||||
//Open the empty db as the output stream
|
||||
OutputStream myOutput = new FileOutputStream(outFileName);
|
||||
//transfer bytes from the inputfile to the outputfile
|
||||
byte[] buffer = new byte[1024];
|
||||
int length;
|
||||
while ((length = myInput.read(buffer))>0){
|
||||
myOutput.write(buffer, 0, length);
|
||||
}
|
||||
//Close the streams
|
||||
myOutput.flush();
|
||||
myOutput.close();
|
||||
myInput.close();
|
||||
}
|
||||
|
||||
public void openDataBase() throws SQLException{
|
||||
//Open the database
|
||||
String myPath = DB_PATH + DB_NAME;
|
||||
swadroidDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void close() {
|
||||
if(swadroidDataBase != null)
|
||||
swadroidDataBase.close();
|
||||
super.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase db) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||
}
|
||||
// Add your public helper methods to access and get content from the database.
|
||||
// You could return cursors by doing "return swadroidDataBase.query(....)" so it'd be easy
|
||||
// to you to create adapters for your views.
|
||||
}
|
Loading…
Reference in New Issue
Block a user