Android 使用SQLite填充ListView时出现问题

Android 使用SQLite填充ListView时出现问题,android,sqlite,Android,Sqlite,我正在尝试将我自己的SQLite db填充到android listview中以供查看,但有一个问题,代码运行时会生成“意外退出” 我已经检查了我的DDMS,emulator在数据库中有我的SQLite文件,该文件是从资产文件复制的 我不确定这里出了什么问题,谁能给我一些建议,我应该从哪里开始看?或者我在下面提供的代码有什么问题吗?我可以在哪里检查代码中的潜在纠结 谢谢你 private void fillData() { Cursor drugsCursor = mDbHelper.

我正在尝试将我自己的SQLite db填充到android listview中以供查看,但有一个问题,代码运行时会生成“意外退出”

我已经检查了我的DDMS,emulator在数据库中有我的SQLite文件,该文件是从资产文件复制的

我不确定这里出了什么问题,谁能给我一些建议,我应该从哪里开始看?或者我在下面提供的代码有什么问题吗?我可以在哪里检查代码中的潜在纠结

谢谢你

private void fillData() {

    Cursor drugsCursor = mDbHelper.fetchAllDrugs();
    startManagingCursor(drugsCursor);

        //Creating an array to specify the fields we want
    String[] from = new String[] {DrugsDbAdapter.KEY_ROWID};

        //and an array of the fields we want to bind in the view
    int[] to = new int[] {R.id.text1};

        //To Create the simple cursor adapter and set it to display
    SimpleCursorAdapter drugs = new SimpleCursorAdapter(this, R.layout.drug_row, drugsCursor, from, to);

    setListAdapter(drugs);

}
处理光标的DrugsDbAdapter.java在这里

public Cursor fetchAllDrugs() {     
    return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_DRUG, KEY_CONTENT, KEY_INDICATION, KEY_DOSAGE, KEY_SPECIALPRECAUTION} , null, null, null, null, null);    
}
我的LogCat的输出(输出的红色部分-我应该发布整个日志吗?)是:


我怀疑问题在于您没有向游标提供名为“\u id”的列。查看我对

日志输出的回答我一直认为_id列只有在我想处理onClick事件时才重要。不用于在列表中显示数据。@Flo:光标必须有一个名为“\u id”的列,该列是从名为“\u id”的实际DB表列返回的,或者是与原始SQL查询有别名的列。无论数据是否被显示、选择或其他什么,光标都会将其用作索引。@MrSquonk:谢谢!我已经使用我自己的文件遵循sqlite数据库设置,遵循的说明相当全面。我已经设置了内部带有_id的sqlite文件来加载。。。我还定义了一个KEY_ROWID=“_id”,我用它来查询,但不明白为什么…@jamen:好吧,可能不是我当时想的。那么‘medboxsd.java’的第67行是哪一行呢?@MrSquonk:谢谢你的回复!medboxsd.java的第67行是第一个代码框“Cursor drugscursors=mDbHelper.fetchalldruges();”中的第一行。我已经尝试解决这个问题整整两天了。。。你能帮我看看吗?这是一个代码,我试图加载和填充到设备的数据库,我可以压缩我的整个文件发送给你?
05-25 18:12:22.338: WARN/dalvikvm(27763): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763): FATAL EXCEPTION: main
05-25 18:12:22.434: ERROR/AndroidRuntime(27763): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.paad.medboxsd/com.paad.medboxsd.medboxsd}: java.lang.NullPointerException
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.os.Looper.loop(Looper.java:123)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at java.lang.reflect.Method.invokeNative(Native Method)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at java.lang.reflect.Method.invoke(Method.java:521)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at dalvik.system.NativeStart.main(Native Method)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763): Caused by: java.lang.NullPointerException
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at com.paad.medboxsd.medboxsd.fillData(medboxsd.java:67)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at com.paad.medboxsd.medboxsd.onCreate(medboxsd.java:56)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-25 18:12:22.434: ERROR/AndroidRuntime(27763):     ... 11 more
05-25 18:12:22.514: WARN/ActivityManager(59):   Force finishing activity com.paad.medboxsd/.medboxsd
05-25 18:12:23.034: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{450fc298 com.paad.medboxsd/.medboxsd}