2012-01-07 73 views
0

我已写入表创建,但是当我试图从我的屏幕之一访问表抛出异常。表未创建

即使当我去命令shell提示我无法找到该表。任何线索,我需要做的。

日志:

W/System.err( 275): at java.lang.Thread.run(Thread.java:1096) 
I/Database( 275): sqlite returned: error code = 1, msg = no such table: woman_registration 
D/AndroidRuntime( 275): Shutting down VM 
W/dalvikvm( 275): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
E/AndroidRuntime( 275): FATAL EXCEPTION: main 
E/AndroidRuntime( 275): android.database.sqlite.SQLiteException: no such table: woman_registration: , while compiling: SELECT DISTINCT 
* FROM woman_registration WHERE (m_name = ? AND f_name = ? and m_age_range = ?) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1229) 
E/AndroidRuntime( 275):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1184) 
E/AndroidRuntime( 275):  at org.atl.db.DBAdapter.isWomanAlreadyRegisgtered(DBAdapter.java:376) 
E/AndroidRuntime( 275):  at com.accenturelabs.idoc.RegisterWoman.registerMother(RegisterWoman.java:237) 
E/AndroidRuntime( 275):  at com.accenturelabs.idoc.RegisterWoman.access$1(RegisterWoman.java:223) 
E/AndroidRuntime( 275):  at com.accenturelabs.idoc.RegisterWoman$4.onClick(RegisterWoman.java:141) 
E/AndroidRuntime( 275):  at android.view.View.performClick(View.java:2408) 
E/AndroidRuntime( 275):  at android.view.View$PerformClick.run(View.java:8816) 
E/AndroidRuntime( 275):  at android.os.Handler.handleCallback(Handler.java:587) 
E/AndroidRuntime( 275):  at android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime( 275):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime( 275):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/AndroidRuntime( 275):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 275):  at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime( 275):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
E/AndroidRuntime( 275):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
E/AndroidRuntime( 275):  at dalvik.system.NativeStart.main(Native Method) 
D/dalvikvm( 58): GC_FOR_MALLOC freed 18388 objects/947880 bytes in 106ms 
W/ActivityManager( 58): Force finishing activity com.accenturelabs.idoc/.RegisterWoman 
I/ARMAssembler( 58): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x34d7b0:0x34d86c] in 7148901 ns 
+0

发布您的代码应用程序。 – 2012-01-07 11:28:26

+0

@bhalkian尝试删除所有表格或从FileExplorer data-> data->包名称 - >数据库中删除.db文件,并再次创建启动应用程序。可能是你的数据库文件必须已经在你的模拟器中使用少量表创建了 – Maverick 2012-01-07 12:08:46

回答

0

其实我不得不卸载从仿真器。它工作得很好后

+0

记住如果你第一次运行你的应用程序,然后你修改你的数据库,那么你必须卸载它,然后重新安装它。否则数据库将不会更新。 – 2012-01-09 06:45:21

0

尝试从DDMS数据赤 - >数据 - >你的包 - >数据库 你会发现这里创建的不是表。 也可以将它拉出来并用SQllite浏览器打开,您将获得所有表格列表。

希望这将帮助你

+0

实际上设备上运行的是相同的代码,但是当我尝试在我的模拟器上时,它根本不工作。 – bhalkian 2012-01-07 11:45:17

0

你应该为你的数据库代码进行扩展SQLiteOpenHelper如果您还不是。

然后检查您的onUpgrade()方法是否也回调您的onCreate()方法。您可能会丢弃所有表格,然后不重新创建它们。确保每次更改表格时都碰到数据库版本号。

谷歌iosched应​​用程序有一个完整的,如果不是稍微复杂的如何做到这一点的例子。

http://code.google.com/p/iosched/source/browse/android/src/com/google/android/apps/iosched/provider/ScheduleDatabase.java