This is my App tab shows
E/SQLiteLog: (1) no such table: quest
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.developmethis.csguide.csquizmodule, PID: 22684
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.developmethis.csguide.csquizmodule/com.developmethis.csguide.csquizmodule.MainActivity}: android.database.sqlite.SQLiteException: no such table: quest (code 1): , while compiling: SELECT * FROM quest WHERE q_id='cp1'
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2480)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2540)
at android.app.ActivityThread.access$900(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1390)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:168)
at android.app.ActivityThread.main(ActivityThread.java:5781)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
Caused by: android.database.sqlite.SQLiteException: no such table: quest (code 1): , while compiling: SELECT * FROM quest WHERE q_id='cp1'
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:891)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:502)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:68)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1402)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1341)
at com.developmethis.csguide.csquizmodule.DbHelper.getAllQuestions(DbHelper.java:96)
at com.developmethis.csguide.csquizmodule.MainActivity.onCreate(MainActivity.java:38)
at android.app.Activity.performCreate(Activity.java:6248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2433)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2540)
at android.app.ActivityThread.access$900(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1390)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:168)
at android.app.ActivityThread.main(ActivityThread.java:5781)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
I have copied the SQLite file into assets folder.this is my directory
What happening is I copied the file from the assets folder and then I'm trying to read data from the SQL table quest although I have double checked the data in the SQLite file through DB browser This is the view from DB browser
Here is the code of my DBhelper class :
package com.developmethis.csguide.csquizmodule;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.FileHandler;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
public class DbHelper extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "sample.sqlite";
public static final String TABLE_QUEST = "quest";
public static final String KEY_QUIZ_ID = "q_id";
private final static String DB_PATH = "/data/data/package com.developmethis.csguide/databases/";
String dbName;
Context context;
File dbFile;
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
this.context = context;
this.dbName = DATABASE_NAME;
dbFile= new File(DB_PATH + DATABASE_NAME);
}
@Override
public synchronized SQLiteDatabase getWritableDatabase() {
if(!dbFile.exists()){
SQLiteDatabase db = super.getWritableDatabase();
copyDataBase(db.getPath());
}
return super.getWritableDatabase();
}
@Override
public synchronized SQLiteDatabase getReadableDatabase() {
if(!dbFile.exists()){
SQLiteDatabase db = super.getReadableDatabase();
copyDataBase(db.getPath());
}
return super.getReadableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
private void copyDataBase(String dbPath){
try{
InputStream assestDB = context.getAssets().open("databases/"+dbName);
OutputStream appDB = new FileOutputStream(dbPath,false);
byte[] buffer = new byte[1024];
int length;
while ((length = assestDB.read(buffer)) > 0) {
appDB.write(buffer, 0, length);
}
appDB.flush();
appDB.close();
assestDB.close();
}catch(IOException e){
e.printStackTrace();
}
}
public List<question> getAllQuestions(String quizID) {
SQLiteDatabase dbase;
List<question> quesList = new ArrayList<question>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_QUEST+" WHERE "+KEY_QUIZ_ID+"='"+quizID+"'";
dbase=this.getReadableDatabase();
Cursor cursor = dbase.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
question quest = new question();
quest.setID(cursor.getInt(cursor.getColumnIndex("id")));
quest.setQUIZ_ID(cursor.getString(cursor.getColumnIndex("q_id")));
quest.setQUESTION(cursor.getString(cursor.getColumnIndex("question")));
quest.setANSWER(cursor.getString(cursor.getColumnIndex("answer")));
quest.setOPTA(cursor.getString(cursor.getColumnIndex("opta")));
quest.setOPTB(cursor.getString(cursor.getColumnIndex("optb")));
quest.setOPTC(cursor.getString(cursor.getColumnIndex("optc")));
quesList.add(quest);
} while (cursor.moveToNext());
}
// return quest list
return quesList;
}
}
This is the view from DB browser