欢迎投稿

今日深度:

android中操作SQLite常见错误,androidsqlite

android中操作SQLite常见错误,androidsqlite


1.  android.database.sqlite.SQLiteException: unable to close due to unfinalised statements

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.evaluation/com.evaluation.VehicleActivity}: android.database.sqlite.SQLiteException: unable to close due to unfinalised statements
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797)
	at android.app.ActivityThread.access$2300(ActivityThread.java:135)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:143)
	at android.app.ActivityThread.main(ActivityThread.java:4914)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:521)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
	at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: unable to close due to unfinalised statements
	at android.database.sqlite.SQLiteDatabase.dbclose(Native Method)
	at android.database.sqlite.SQLiteDatabase.onAllReferencesReleased(SQLiteDatabase.java:363)
	at android.database.sqlite.SQLiteClosable.releaseReference(SQLiteClosable.java:45)
	at android.database.sqlite.SQLiteProgram.onAllReferencesReleased(SQLiteProgram.java:116)
	at android.database.sqlite.SQLiteClosable.releaseReference(SQLiteClosable.java:45)
	at android.database.sqlite.SQLiteProgram.close(SQLiteProgram.java:293)
	at android.database.sqlite.SQLiteQuery.close(SQLiteQuery.java:133)
	at android.database.sqlite.SQLiteCursor.close(SQLiteCursor.java:532)
	at com.DatabaseHelper.selectAssessInformation(DatabaseHelper.java:338)
	at com.JSKApplication.selectAssessInformation(JSKApplication.java:631)
	at com.VehicleActivity.onCreate(VehicleActivity.java:548)
	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1065)
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745)
	... 11 more

这个错误翻译过来就是:不能关闭数据库由于未完成的语句。

最可能的原因是:你在操作sqlite数据库时使用多线程了,但sqlite数据库是不支持多线程操作,所以你必须实现多线程同步的机制。

2.android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed

约束失败,导致这类错误,原因一般有两个:

1)插入的数据有一个是主键,而且插入的主键相同;

2)插入的数据有一条数据为空,而数据库中定义不能为空,也会导致这样的错误;

3. close() was never explicitly called on database 

10-09 19:24:41.269: E/Database(1269): close() was never explicitly called on database '/data/data/com.android.providers.media/databases/external-47cd50a6.db' 
10-09 19:24:41.269: E/Database(1269): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here 
10-09 19:24:41.269: E/Database(1269): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1847) 
10-09 19:24:41.269: E/Database(1269): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820) 
10-09 19:24:41.269: E/Database(1269): at 
对于Android中的SQLite数据库,我一般采用的方法是,随用随取随关。 
进行DAO操作时,首先获取一个SQLiteDatabase对象,具体代码采用try{}finally{}的格式。确保有任何问题,数据库对象都被关闭。


www.htsjk.Com true http://www.htsjk.com/SQLite/36265.html NewsArticle android中操作SQLite常见错误,androidsqlite 1.  android.database.sqlite.SQLiteException: unable to close due to unfinalised statements FATAL EXCEPTION: mainjava.lang.RuntimeException: Unable to start activity ComponentInfo{co...
相关文章
    暂无相关文章
评论暂时关闭