【发布时间】: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 行为是强制关闭。