I'm fairly new to Android. I'm making an application that shows a whole lot amount of different stings on previous and forward button clicks. I also have a database stored in the assets folder.. now I'm bit confused as to how tdo I read from that database in Ecilipse and pass it onto the textview. also, Is It Possible to show the strings one by one. Just like it happens in Arrays?
DataBaseCreator.java
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class DataBaseCreator extends SQLiteOpenHelper {
private static String DB_PATH = "/GetInspiredAndHaveFun/assets/Jokes.db";
private static String DB_NAME = "Jokes.db";
private static int DB_VERSION = 1;
public static String DATABASE_TABLE = "myjoke";
public String temp = "";
public String[] col;
private SQLiteDatabase myDataBase;
private final Context myContext;
public DataBaseCreator(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.myContext = context;
}
public void openDatabase() throws IOException {
boolean dbe = checkDataBase();
if (dbe) {
Log.i("Tag", "dbe" + dbe);
} else {
Log.i("Tag", "dbdoesnotexist" + dbe);
this.getReadableDatabase();
copyDataBase();
}
}
public void copyDataBase() throws IOException {
InputStream inp = myContext.getAssets().open(DB_NAME);
String ofn = DB_PATH + DB_NAME;
OutputStream oup = new FileOutputStream(ofn);
byte[] buffer = new byte[1024];
int length;
while ((length = inp.read(buffer)) > 0) {
oup.write(buffer, 0, length);
}
oup.flush();
inp.close();
oup.close();
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
}
catch (SQLiteException e) {
}
return checkDB != null ? true : false;
}
public void openDataBase() throws SQLException {
// Open the database
String myPath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
passText();
}
public final String passText() {
Cursor cursor = myDataBase.query(DATABASE_TABLE, col, null, null,
null, null, null);
String[] column = cursor.getColumnNames();
column=col;
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
temp += cursor.getString(50);
cursor.moveToNext();
}
return temp;
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
Jokes activity
import java.io.IOException;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class Jokes extends Activity {
ImageButton bck, fwd, cpy, col;
TextView t1;
String[] jok;
int i, a3;
TextView nm1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jokes);
..
...
...
...
..
.
}
{
DataBaseCreator myDbHelper = new DataBaseCreator(this);
try{
myDbHelper.copyDataBase();
}
catch (IOException ioe) {
throw new Error("Unable to create database");
}
myDbHelper.openDataBase();
}
}