Make sure you have the WRITE_EXTERNAL_STORAGE permission. Also, in the
stack trace you listed, there is probably a "Caused by:" section after
what you had in your original email -- that may give you additional
clues.

On Sun, Jun 20, 2010 at 10:45 AM, kamiseq <kami...@gmail.com> wrote:
> hi all,
> I have a small problem with my code, I am trying to create (if that
> does not exist) and open connection to sqlite but it fails to open. Im
> doing that cos I know that my db can be big and may not fit into
> mobile local storage.
>
> 1. I get path to external storage and get the full path to sqlite file
> (both rootFolder (ie, "sqlitedb") and name (ie. "mydb.db") may not
> exists on sd card)
> private String getExternal(String rootFolder, String name) {
>        final String externalStorageState =
> Environment.getExternalStorageState();
>        if (Environment.MEDIA_MOUNTED.equals(externalStorageState)) {
>            externalReadOnly = false;
>        } else if
> (Environment.MEDIA_MOUNTED_READ_ONLY.equals(externalStorageState)) {
>            externalReadOnly = true;
>        } else {
>            throw new SQLiteDiskIOException("couldn't obtain external
> data store");
>        }
>        return new
> StringBuilder(Environment.getExternalStorageDirectory().
>                getPath()).append(File.pathSeparator).
>                append(rootFolder).
>                append(File.pathSeparator).
>                append(name).
>                toString();
>    }
> 2. im trying to open the sqlite db with given path
> final String path = getExternal(root, name);
> Log.d(TAG, "opening readonly database at " + path);
> db = SQLiteDatabase.openDatabase(path, null,
> SQLiteDatabase.OPEN_READWRITE & SQLiteDatabase.CREATE_IF_NECESSARY);
>
> but this is throwing exception
> D/SqliteExternalHelper(  362): opening writable database at /
> sdcard:db:my_external_db.db
> E/Database(  362): sqlite3_open_v2("/sdcard:db:my_external_db.db",
> &handle, 2, NULL) failed
> D/AndroidRuntime(  362): Shutting down VM
> W/dalvikvm(  362): threadid=3: thread exiting with uncaught exception
> (group=0x4001b188)
> E/AndroidRuntime(  362): Uncaught handler: thread main exiting due to
> uncaught exception
> E/AndroidRuntime(  362): android.database.sqlite.SQLiteException:
> unable to open database file
> E/AndroidRuntime(  362):        at
> android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
> E/AndroidRuntime(  362):        at
> android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:
> 1697)
> E/AndroidRuntime(  362):        at
> android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:
> 738)
> E/AndroidRuntime(  362):        at
> info.kamiseq.db.SqliteExternalHelper.getWritable(SqliteExternalHelper.java:
> 126)
> E/AndroidRuntime(  362):        at
> info.kamiseq.db.SqliteExternalHelper.getWritable(SqliteExternalHelper.java:
> 97)
>
> I am a bit confused about how this should work,
> thank for help.

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://github.com/commonsguy
http://commonsware.com/blog | http://twitter.com/commonsguy

_The Busy Coder's Guide to Android Development_ Version 3.1
Available!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to