【问题标题】:SQLite database creation fails, documentation is unclearSQLite 数据库创建失败,文档不清楚
【发布时间】:2010-04-04 12:12:35
【问题描述】:

当我将此代码添加到我的 Android 2.1 Java 应用程序时,它失败了:

db=SQLiteDatabase.openOrCreateDatabase("Locations", null);

我是否需要特殊权限才能创建数据库,或者任何人都可以提供如何找出问题所在的建议吗?

这是 LogCat 的输出:

04-04 15:04:28.702: DEBUG/ddm-heap(703): Got feature list request
04-04 15:04:29.642: ERROR/Database(703): sqlite3_open_v2("Locations", &handle, 6, NULL) failed
04-04 15:04:29.652: DEBUG/AndroidRuntime(703): Shutting down VM
04-04 15:04:29.662: WARN/dalvikvm(703): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-04 15:04:29.662: ERROR/AndroidRuntime(703): Uncaught handler: thread main exiting due to uncaught exception
04-04 15:04:29.702: ERROR/AndroidRuntime(703): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gormtech.zyx.RejseplanQuick/com.xxx.zyx.xxx.HelloAndroid}: android.database.sqlite.SQLiteException: unable to open database file

【问题讨论】:

  • 您能否更具体地说明“失败”,例如发布 Java 堆栈跟踪?您可以通过 adb logcat、DDMS 或 Eclipse 中的 DDMS 透视图访问该堆栈跟踪。 FWIW,我真的建议您使用SQLiteOpenHelper,而不是按照您的方式手动打开数据库,这样您就可以在架构更改时获得帮助来更新架构。
  • 在开始使用 SQLiteOpenHelper 等晦涩的方法之前,了解事物的工作原理对我来说非常重要。否则我很容易得到一个不稳定或缓慢的应用程序,而不知道为什么。
  • 我已经添加了 logcat 输出。错误信息是它无法打开数据库文件,并且 GUI 行为是强制关闭。

标签: java android sqlite


【解决方案1】:

任何应用都可以在没有任何特殊权限的情况下创建 SQLiteDatabase。

我对你的代码 sn-p 有点失望,因为在我的文档/SDK 中 openOrCreateDatabase (on Context) 需要三个参数:名称、操作模式和工厂。 https://developer.android.com/reference/android/content/Context.html

看到你的“adb logcat”的输出会很有启发性。从控制台运行 adb 应用程序,或者在 Eclipse 中打开 LogCat 窗口(这可能有助于切换到 DDMS Perspective)。运行应用程序,获取失败并将后面的行粘贴到此处。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多