创建时SQLite数据库失败

大卫

我有此数据库创建方法:

private void addDataBase() throws SQLException {

        File FestivaleDir = new File("/sdcard/Ementor/");
        if (!FestivaleDir.exists()) {
            FestivaleDir.mkdirs();

        }   

        emBase.db = getActivity().openOrCreateDatabase(
                "/storage/emulated/0/Ementor/EyeModbusAndroid.db",
                SQLiteDatabase.CREATE_IF_NECESSARY, null);
    }

如果我在Android 4.2或更高版本上运行它,效果很好,但是在下面运行失败,logcat会说:

12-05 15:15:08.414:E / AndroidRuntime(19945):致命例外:主要12-05 15:15:08.414:E / AndroidRuntime(19945):android.database.sqlite.SQLiteCantOpenDatabaseException:未知错误(代码14) :无法打开数据库12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.database.sqlite.SQLiteConnection.nativeOpen(本机方法)12-05 15:15:08.414:E / AndroidRuntime(19945) :在android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193 )12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.database.sqlite .SQLiteDatabase.openInner(SQLiteDatabase.java:804)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)12-05 15:15 :08.414:E / AndroidRuntime(19945):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.app.ContextImpl。 openOrCreateDatabase(ContextImpl.java:827)12-05 15:15:08.414:E / AndroidRuntime(19945):at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:816)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:215)12-05 15:15:08.414:E / AndroidRuntime(19945):位于com.eyecom.modbusandroid.Main.addDataBase(Main.java:138)12-05 15:15:08.414:E / AndroidRuntime(19945):位于com.eyecom.modbusandroid.Main.onCreateView (Main.java:120)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)12-05 15:15:08.414 :E / AndroidRuntime(19945):位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.support.v4。 app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.support.v4.app .FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.support.v4.view.ViewPager.populate(ViewPager.java:1068)12-05 15 :15:08.414:E / AndroidRuntime(19945):在android.support.v4.view.ViewPager.populate(ViewPager.java:914)12-05 15:15:08.414:E / AndroidRuntime(19945):在android。 support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)12-05 15:15:08.414:E / AndroidRuntime(19945):at android.view.View.measure(View.java:15323)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android。widget.FrameLayout.onMeasure(FrameLayout.java:315)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.view.View.measure(View.java:15323)12-05 15:15: 08.414:E / AndroidRuntime(19945):位于android.widget.LinearLayout.measureVertical(LinearLayout.java:850)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.widget.LinearLayout.onMeasure(LinearLayout .java:579)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.view.View.measure(View.java:15323)12-05 15:15:08.414:E / AndroidRuntime(19945) ):位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.widget.FrameLayout.onMeasure(FrameLayout.java:315)12- 05 15:15:08.414:E / AndroidRuntime(19945):at com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2155)12-05 15:15:08.414:E / AndroidRuntime( 19945):在android.view.View.measure(View.java:15323)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1854)12-05 15 :15:08.414:E / AndroidRuntime(19945):在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1102)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.view.ViewRootImpl。 performTraversals(ViewRootImpl.java:1275)12-05 15:15:08.414:E / AndroidRuntime(19945):at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:4218)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.view.Choreographer $ CallbackRecord.run(Choreographer .java:725)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.view.Choreographer.doCallbacks(Choreographer.java:555)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.view.Choreographer.doFrame(Choreographer.java:525)12-05 15:15:08.414:E / AndroidRuntime(19945):在android.view.Choreographer $ FrameDisplayEventReceiver .run(Choreographer.java:711)12-05 15:15:08.414:E / AndroidRuntime(19945):at android.os.Handler.handleCallback(Handler.java:615)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.os.Handler.dispatchMessage(Handler.java:92)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.os.Looper.loop(Looper.java: 137)12-05 15:15:08.414:E / AndroidRuntime(19945):位于android.app.ActivityThread.main(ActivityThread.java:4744)12-05 15:15:08.414:E / AndroidRuntime(19945):位于java.lang.reflect.Method.invokeNative(本机方法)12-05 15:15:08.414:E / AndroidRuntime(19945):at java.lang.reflect.Method.invoke(Method.java:511)12-05 15 :15:08.414:E / AndroidRuntime(19945):位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)12-05 15:15:08.414:E / AndroidRuntime(19945):位于com.android.internal .os.ZygoteInit.main(ZygoteInit.java:553)12-05 15:15:08.414:E / AndroidRuntime(19945):在dalvik.system.NativeStart.main(本机方法)

海浪

请勿尝试指定数据库的完整路径"/storage/emulated/0/Ementor/EyeModbusAndroid.db"仅文件名部分就足够了"EyeModbusAndroid.db"

该平台将确保将数据库放置在适合您的应用程序的文件夹中。

但是,如果您确实愿意可以指定完整路径只要确保

  • 路径以File.separatorCharie开头/
  • 路径有效(最后一个目录组件不需要存在,需要时创建)
  • 该路径是可读可写的,即您具有必要的权限

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建sqlite数据库时出错?

来自分类Dev

创建sqlite数据库时出现空指针异常

来自分类Dev

SQLite数据库Rowid失败

来自分类Dev

php数据库表创建失败

来自分类Dev

创建数据并将数据添加到SQLite数据库时出错

来自分类Dev

创建数据并将数据添加到SQLite数据库时出错

来自分类Dev

未在sqlite中创建数据库

来自分类Dev

从.sql文件创建SQLite数据库

来自分类Dev

无法创建本地数据库SQLite

来自分类Dev

通过android创建sqlite数据库

来自分类Dev

关于创建简单的SQLite数据库

来自分类Dev

SQLIte不创建数据库表

来自分类Dev

使用SQlite数据库创建arrayList

来自分类Dev

Sqlite 数据库没有被创建

来自分类Dev

在 PublisherCacheFolder 中创建 Sqlite 数据库

来自分类Dev

Android 无法创建 SQLite 数据库

来自分类Dev

尝试创建sqlite数据库“无法创建表” IOS7时出错

来自分类Dev

尝试创建sqlite数据库“无法创建表” IOS7时出错

来自分类Dev

在终端中创建 sqlite3 数据库时出现“错误:无法打开数据库”

来自分类Dev

SQLite数据库在更新时挂起

来自分类Dev

连接时锁定SQLite数据库

来自分类Dev

插入sqlite数据库时出错

来自分类Dev

在数据库上创建程序集时,部署SQL CLR Project失败

来自分类Dev

创建数据库时出错

来自分类Dev

创建Rails数据库时出错

来自分类Dev

在数据库中创建android SQLite表时出现语法错误

来自分类Dev

Android SQLite数据库,为什么删除表并在升级时重新创建

来自分类Dev

使用SQLite数据库创建时AutoIncrement附近的语法错误

来自分类Dev

使用AUTOINCREMENT的复合主键在SQLite数据库中创建表时出错