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(ネイティブ メソッド) 11-29 15:26:38.582: E/AndroidRuntime(18519): 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): dalvik.system.NativeStart.main(ネイティブ メソッド) 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): 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(ネイティブ メソッド) 11-29 15:26:38.582: E/AndroidRuntime(18519): 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 に答える