Java 如何更改数据库路径?

Java 如何更改数据库路径?,java,sqlite,Java,Sqlite,我想在/storage/sdcard/Android/data/com.example.sms/databases中创建一个新的SQLiteDatabase,而不是原来的/data/data/。。。。文件夹 我的班级: public static final String DB_NAME = "MyDb"; public static final String DB_TABLE = "mainTable"; public static final int version = 1; Context

我想在/storage/sdcard/Android/data/com.example.sms/databases中创建一个新的SQLiteDatabase,而不是原来的/data/data/。。。。文件夹

我的班级:

public static final String DB_NAME = "MyDb";
public static final String DB_TABLE = "mainTable";
public static final int version = 1;
Context context;

public static final String DB_PATH = Environment.getExternalStorageDirectory().toString()+"/Android/data/com.examples.sms/databases/";

public DataBaseHelper(Context context) {
    super(context, DB_PATH+DB_NAME, null, version);
    // TODO Auto-generated constructor stub
    this.context = context;
}
我的日志文件:
10-22 06:20:42.810: E/SQLiteLog(24907): (14) cannot open file at line 30191 of [00bb9c9ce4]
10-22 06:20:42.810: E/SQLiteLog(24907): (14) os_unix.c:30191: (2) open(/storage/sdcard/Android/data/com.examples.sms/databases/MyDb) - 
10-22 06:20:42.870: E/SQLiteDatabase(24907): Failed to open database '/storage/sdcard/Android/data/com.examples.sms/databases/MyDb'.
10-22 06:20:42.870: E/SQLiteDatabase(24907): android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:863)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:235)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at com.example.sms.MainActivity$1.onClick(MainActivity.java:52)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.view.View.performClick(View.java:4240)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.view.View$PerformClick.run(View.java:17721)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.os.Handler.handleCallback(Handler.java:730)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.os.Looper.loop(Looper.java:137)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at java.lang.reflect.Method.invokeNative(Native Method)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at java.lang.reflect.Method.invoke(Method.java:525)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 06:20:42.870: E/SQLiteDatabase(24907):    at dalvik.system.NativeStart.main(Native Method)
10-22 06:20:42.870: D/AndroidRuntime(24907): Shutting down VM
10-22 06:20:42.880: W/dalvikvm(24907): threadid=1: thread exiting with uncaught exception (group=0x41465700)
10-22 06:20:42.900: E/AndroidRuntime(24907): FATAL EXCEPTION: main
10-22 06:20:42.900: E/AndroidRuntime(24907): android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:863)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:235)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at com.example.sms.MainActivity$1.onClick(MainActivity.java:52)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.view.View.performClick(View.java:4240)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.view.View$PerformClick.run(View.java:17721)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.os.Handler.handleCallback(Handler.java:730)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.os.Looper.loop(Looper.java:137)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at java.lang.reflect.Method.invokeNative(Native Method)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at java.lang.reflect.Method.invoke(Method.java:525)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 06:20:42.900: E/AndroidRuntime(24907):    at dalvik.system.NativeStart.main(Native Method)

您会在应用程序声明文件中授予权限吗

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
宣言将如下所示:


请显示您请求该目录权限的代码。我授予写入外部存储权限。现在它可以工作了,但前提是我在文件浏览器中一步一步地创建/Android/data/com.examples.sms/databases/folders。如果它们不存在,我将再次收到此日志错误。谢谢您的回答。我授予此权限。现在它可以工作了,但前提是我在文件浏览器中一步一步地创建/Android/data/com.examples.sms/databases/folders。如果它们不存在,我会再次得到日志错误。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.ieclbd.moa.iapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="net.ieclbd.moa.iapp.LoginActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|locale|screenSize"

            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Light.NoTitleBar"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>



    <activity
        android:name="net.ieclbd.moa.iapp.HomeActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|locale|screenSize"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Light.NoTitleBar"
        android:label="Home" ></activity>
        </application>