I copied the database into the assets folder using Firefox's SQLiteManager. I'm not sure I have the Path correct - I changed the /databases to /assets as I read this is the way to do it using Android Studio. Also, I saw this post: http://ift.tt/1O7Hj5j could- not-open-database
and then added the DATABASE_CREATE statement to the onCreate method - but I did not have that in the beginning because I was copying the database from an existing source and did not think I needed the DATABASE_CREATE statement. Please let me know something! Thanks in advance.
Here's the LogCat:
    07-13 16:34:54.726    1060-1060/? E/SQLiteLog﹕ (14) cannot open file at line 30184 of [00bb9c9ce4]
07-13 16:34:54.726    1060-1060/? E/SQLiteLog﹕ (14) os_unix.c:30184: (2) open(/data/data/com.blogspot.joyouslybeingjoy.promisescyb/assets/cybdatabase.sqlite) -
07-13 16:34:54.746    1060-1060/? E/SQLiteDatabase﹕ Failed to open database '/data/data/com.blogspot.joyouslybeingjoy.promisescyb/assets/cybdatabase.sqlite'.
    android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
            at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669)
            at com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb.DatabaseHelper.DBExists(DatabaseHelper.java:88)
            at com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb.DatabaseHelper.createDatabase(DatabaseHelper.java:74)
            at com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb.MainActivity.onCreate(MainActivity.java:50)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
07-13 16:34:54.746    1060-1060/? D/AndroidRuntime﹕ Shutting down VM
07-13 16:34:54.746    1060-1060/? W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb1aa7ba8)
07-13 16:34:54.766    1060-1060/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb, PID: 1060
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb/com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb.MainActivity}: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
            at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669)
            at com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb.DatabaseHelper.DBExists(DatabaseHelper.java:88)
            at com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb.DatabaseHelper.createDatabase(DatabaseHelper.java:74)
            at com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb.MainActivity.onCreate(MainActivity.java:50)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
Here's my MainActivity class:
public class MainActivity extends Activity {
public static String CATEGORY_EXTRA="com.blogspot.joyouslybeingjoy.promsiesofthebiblecyb.MainActivity.category";
private DatabaseHelper dbHelper = null;
private Cursor ourCursor = null;
private CategoryAdapter adapter = null;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = (ListView) findViewById(R.id.listViewCategories);
    String[] categories = getResources().getStringArray(R.array.categories_array);
    dbHelper = new DatabaseHelper(this);
    dbHelper.createDatabase();
    try {
        dbHelper.openDataBase();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    ourCursor = dbHelper.getCursor();
    startManagingCursor(ourCursor);
    adapter = new CategoryAdapter(ourCursor);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(onListClick);
}
private AdapterView.OnItemClickListener onListClick = new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // ListView Clicked item index
        int itemPosition = position;
        // ListView Clicked item value
        String itemValue = (String) listView.getItemAtPosition(position);
        CATEGORY_EXTRA = itemValue;
        Intent i = new Intent(MainActivity.this, DisplayResult.class);
        i.putExtra(CATEGORY_EXTRA, itemValue);
        startActivity(i);
    }
};
class CategoryAdapter extends CursorAdapter {
    CategoryAdapter(Cursor c) {
        super(MainActivity.this, c);
    }
    @Override
    public void bindView(View row, Context ctxt, Cursor c) {
        CategoryHolder holder = (CategoryHolder) row.getTag();
        holder.populateFrom(c, dbHelper);
    }
    @Override
    public View newView(Context ctxt, Cursor c, ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater();
        View row = inflater.inflate(R.layout.verses, parent, false);
        CategoryHolder holder = new CategoryHolder(row);
        row.setTag(holder);
        return (row);
    }
}
static class CategoryHolder {
    private TextView category = null;
    private TextView book = null;
    private TextView chapter = null;
    private TextView verse = null;
    private TextView word = null;
    CategoryHolder(View row) {
        category = (TextView)row.findViewById(R.id.txtViewCategory);
        book = (TextView)row.findViewById(R.id.txtViewBook);
        chapter = (TextView)row.findViewById(R.id.txtViewChapter);
        verse = (TextView)row.findViewById(R.id.txtViewVerse);
        word = (TextView)row.findViewById(R.id.txtViewWord);
    }
    void populateFrom(Cursor c, DatabaseHelper r) {
        category.setText(r.getColumnCategory(c));
        book.setText(r.getColumnBook(c));
        chapter.setText(r.getColumnChapter(c));
        verse.setText(r.getColumnVerse(c));
        word.setText(r.getColumnWord(c));
    }
Here's the second activity, DisplayResult: public class DisplayResult extends Activity {
String passedVar = null;
private TextView passedView = null;
private DatabaseHelper dbHelper = null;
private Cursor ourCursor = null;
private VerseAdapter adapter = null;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.verses);
    passedVar = getIntent().getStringExtra(MainActivity.CATEGORY_EXTRA);
    ListView myListView = (ListView) findViewById(R.id.listViewItems);
    dbHelper = new DatabaseHelper(this);
    // a set of results from a db query
    ourCursor = dbHelper.getVersesByCategory(passedVar);
    startManagingCursor(ourCursor);
    adapter = new VerseAdapter(ourCursor);
    myListView.setAdapter(adapter);
}
class VerseAdapter extends CursorAdapter {
    VerseAdapter(Cursor c) {
        super(DisplayResult.this, c);
    }
    @Override
    public void bindView(View row, Context ctxt, Cursor c) {
        VerseHolder holder = (VerseHolder)row.getTag();
        holder.populateFrom(c, dbHelper);
    }
    @Override
    public View newView(Context ctxt, Cursor c, ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater();
        View row = inflater.inflate(R.layout.verses, parent, false);
        VerseHolder holder = new VerseHolder(row);
        row.setTag(holder);
        return(row);
    }
}
static class VerseHolder {
    private TextView category = null;
    private TextView book = null;
    private TextView chapter = null;
    private TextView verse = null;
    private TextView word = null;
    VerseHolder(View row) {
        category = (TextView)row.findViewById(R.id.txtViewCategory);
        book = (TextView)row.findViewById(R.id.txtViewBook);
        chapter = (TextView)row.findViewById(R.id.txtViewChapter);
        verse = (TextView)row.findViewById(R.id.txtViewVerse);
        word = (TextView)row.findViewById(R.id.txtViewWord);
    }
    void populateFrom(Cursor c, DatabaseHelper r) {
        category.setText(r.getColumnCategory(c));
        book.setText(r.getColumnBook(c));
        chapter.setText(r.getColumnChapter(c));
        verse.setText(r.getColumnVerse(c));
        word.setText(r.getColumnWord(c));
    }
}
And here's the DatabaseHelper class:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DB_VERSION = 1;                   
private static final S
ing DB_NAME = "cybdatabase.sqlite";
private String DB_PATH = "/data/data/
om.blogspot.joyouslybeingjoy.promisescyb/assets/";
public sta
ic final String TABLE_NAME = "cybpromises";
public static final
String COLUMN_ID = "_id";
public 
tatic
inal String C LUMN_CATEGORY = "category";
public stat
c final String COLUMN_BOOK = "book";
public static final String COLUMN_CHAPTER = "c
apter";
pub ic static final String COLUMN_VERSE = "verse";
public stati
final String COLUMN_WORD = "word";
private SQLiteDatabase dbSqlite;                                 
private fin
Context myContext;
private Context con
ext;
public DatabaseHelper(Context context) {                                                
    super(context, DB_NAME, null, 
B_VERSION);
this.myContext = cont
xt;
}   
@Override                                   
publ
c void onCreate(SQLiteDatabase db) {
    String DATABASE_
REATE =
            "CRE
TE TABLE if not exists " + TABLE_NAME + " ( " +
             COLUMN_ID + " INTEGER PRIMARY K
Y, " +
                    COLUMN_CATEGORY + " TEXT, " +                                 
                 COLUMN_BOOK +
" TEXT, " +
COLUMN_CHAPTER + " INTEGER " +
  COLUMN_VERSE + " INTEGER, " +    
                    COLUMN_WORD + " TEXT " + ")";     
    db.execSQL(DATABASE_CREATE);                       
}    
@Override 
public void onUpgrade(SQLiteDatabase db, 
n
Aucun commentaire:
Enregistrer un commentaire