1

我在数据库中有一个名为“EMR_PT_REFERNCE”的表,其中包含患者参考详细信息……表中有一个名为“EPR_OUT_HOSPITAL”的列,其中包含外部医院的名称……我试图获取“EPR_OUT_HOSPITAL”的不同值' 从表中...如果所有行都填满了值,那么它工作正常.. 但是如果任何行为空,那么它会触发异常并且我的应用程序被强制关闭...请帮助

------------------------------------这是代码---------- --------------------------

  // to load out hospital/ clinic data into spinner
        private void loadOutHospitalListSpinner() {
            // TODO Auto-generated method stub

            Log.v("this is inside load out hospital list spinner------------>","");

            try {

                if (getFirstRun()) {
                    sampleDB = dbAdapter.getDatabase();
                    setRunned();
                } else {
                    sampleDB = dbAdapter.getWritableDatabase();
                }
                Cursor c1 = sampleDB.rawQuery("select DISTINCT EPR_OUT_HOSPITAL from EMR_PT_REFERNCE",null);

                if (c1 != null && c1.getCount() != 0) {

                    hospitalNameListArray.clear();

                    if (c1.moveToFirst()) {

                        do {
                            hospitalNameListArray.add(c1.getString(c1.getColumnIndex("EPR_OUT_HOSPITAL")));

                        } while (c1.moveToNext());
                    }
                }
                c1.close();

                ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, hospitalNameListArray);

                // dropdownlist
                dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                spnOutHospitalList.setAdapter(dataAdapter);


            } catch (Exception e) {
                // TODO: handle exception
                System.out.println("CAT LIST ERROR IS: " + e.getMessage());
            }

        }

-----------------------------------here is the Logcat Error--------------------------------

11-29 15:26:38.572: D/AndroidRuntime(18519): Shutting down VM 
11-29 15:26:38.572: W/dalvikvm(18519): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
11-29 15:26:38.582: E/AndroidRuntime(18519): FATAL EXCEPTION: main 
11-29 15:26:38.582: E/AndroidRuntime(18519): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.stpl.emr.login/com.stpl.emr.patientlist.PatientList}: java.lang.NullPointerException 

11-29 15:26:38.582: E/AndroidRuntime(18519): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 11-29 15:26:38.582: E/AndroidRuntime(18519): 在 android. app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 11-29 15:26:38.582: E/AndroidRuntime(18519): 在 android.app.ActivityThread.access$600(ActivityThread.java:123) 11-29 15:26 :38.582: E/AndroidRuntime(18519): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 11-29 15:26:38.582: E/AndroidRuntime(18519): 在 android.os.Handler。 dispatchMessage(Handler.java:99) 11-29 15:26:38.582: E/AndroidRuntime(18519): 在 android.os.Looper.loop(Looper.java:137) 11-29 15:26:38.582: E/ AndroidRuntime(18519):在 android.app.ActivityThread.main(ActivityThread.java:4424) 11-29 15:26:38.582:E/AndroidRuntime(18519):在 java.lang。reflect.Method.invokeNative(Native Method) 11-29 15:26:38.582: E/AndroidRuntime(18519): at java.lang.reflect.Method.invoke(Method.java:511) 11-29 15:26:38.582 : E/AndroidRuntime(18519): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 11-29 15:26:38.582: E/AndroidRuntime(18519): 在 com.android。 internal.os.ZygoteInit.main(ZygoteInit.java:551) 11-29 15:26:38.582: E/AndroidRuntime(18519): at dalvik.system.NativeStart.main(Native Method) 11-29 15:26:38.582 : E/AndroidRuntime(18519): 由: java.lang.NullPointerException 11-29 15:26:38.582: E/AndroidRuntime(18519): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127) 11-29 15:26:38.582: E/AndroidRuntime(18519): 在 com.stpl.emr.database.DataBaseHelper.getDatabasePath(DataBaseHelper.java:241) 11-29 15:26:38.582:E/AndroidRuntime(18519): 在 com.stpl.emr.database.DataBaseHelper.checkDatabase(DataBaseHelper.java:204) 11-29 15:26:38.582: E/AndroidRuntime(18519): 在 com.stpl.emr.database .DataBaseHelper.initialize(DataBaseHelper.java:61) 11-29 15:26:38.582: E/AndroidRuntime(18519): at com.stpl.emr.database.DataBaseHelper.getInstance(DataBaseHelper.java:93) 11-29 15 :26:38.582: E/AndroidRuntime(18519): 在 com.stpl.emr.patientlist.PatientList.(PatientList.java:45) 11-29 15:26:38.582: E/AndroidRuntime(18519): 在 java.lang .Class.newInstanceImpl(Native Method) 11-29 15:26:38.582: E/AndroidRuntime(18519): at java.lang.Class.newInstance(Class.java:1319) 11-29 15:26:38.582: E/ AndroidRuntime(18519):在 android.app.Instrumentation.newActivity(Instrumentation.java:1023) 11-29 15:26:38.582:E/AndroidRuntime(18519):在 android.app。ActivityThread.performLaunchActivity(ActivityThread.java:1871) 11-29 15:26:38.582: E/AndroidRuntime(18519): ... 11 更多

4

1 回答 1

2

试试看:

改变

  do {
     hospitalNameListArray.add(c1.getString(c1.getColumnIndex("EPR_OUT_HOSPITAL")));
  } while (c1.moveToNext());
}

  do {
     if (null!=c1.getString(c1.getColumnIndex("EPR_OUT_HOSPITAL")))
         hospitalNameListArray.add(c1.getString(c1.getColumnIndex("EPR_OUT_HOSPITAL")));
  } while (c1.moveToNext());
}
于 2012-11-29T10:23:22.463 回答