2013-04-14 10 views
0

在我的應用程序中,我想要顯示來自sqlite的數據。 當我按下Show Info按鈕時,我想把放置函數getInfo的記錄放到textView中。這是我的代碼:當我想從sqlite顯示一行時出錯

btnShow = (Button) findViewById(R.id.btnInfo); 
     final TextView txtNume = (TextView) findViewById(R.id.txtNume); 
     final TextView txtPrenume = (TextView) findViewById(R.id.txtPrenume); 
     final TextView txtTelefon = (TextView) findViewById(R.id.txtTelefon); 
     final TextView txtAdresa = (TextView) findViewById(R.id.txtadresa); 
     final TextView txtAdresaEmail = (TextView) findViewById(R.id.txtEmail); 
     final TextView txtDataNasterii = (TextView) findViewById(R.id.txtDataNasterii); 
     final TextView txtSex = (TextView) findViewById(R.id.txtSex); 
     btnShow.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       Pacienti pacienti = pacientiDB.getInfo(text); 
       if (pacienti != null) { 
        pacienti.setTelefon(txtTelefon.getText().toString()); 
        pacienti.setPrenume(txtPrenume.getText().toString()); 
        pacienti.setNume(txtNume.getText().toString()); 
        pacienti.setAdresa(txtAdresa.getText().toString()); 
        pacienti.setDataNasterii(txtDataNasterii.getText().toString()); 
        pacienti.setEmail(txtAdresaEmail.getText().toString()); 
        pacienti.setSex(txtSex.getText().toString()); 
        }} 

}); 

這是函數的getInfo:

public Pacienti getInfo(String text) { 
     Pacienti returnPacient = null; 
     Cursor cursor = null; 

     try { 

      cursor = database.rawQuery("SELECT * FROM " + PACIENTI_NAME 
        + " WHERE prenume = '" + text + "'", null); 
      if (cursor.getCount() > 0) { 
       int indexTelefon = cursor.getColumnIndex("telefon"); 
       int indexPrenume = cursor.getColumnIndex("prenume"); 
       int indexNume = cursor.getColumnIndex("nume"); 
       int indexAdresaEmail = cursor.getColumnIndex("adresaEmail"); 
       int indexSex = cursor.getColumnIndex("Sex"); 
       int indexAdresaBuletin = cursor.getColumnIndex("AdresaBuletin"); 
       int indexDatanasterii = cursor.getColumnIndex("dataNasterii"); 
       cursor.moveToFirst(); 
       do { 
        String nume = cursor.getString(indexNume); 
        String prenume = cursor.getString(indexPrenume); 
        String Telefon = cursor.getString(indexTelefon); 
        String AdresaEmail = cursor.getString(indexAdresaEmail); 
        String Sex = cursor.getString(indexSex); 
        String AdresaBuletin = cursor.getString(indexAdresaBuletin); 
        String DataNasterii = cursor.getString(indexDatanasterii); 

        returnPacient = new Pacienti(); 
        returnPacient.setNume(nume); 
        returnPacient.setPrenume(prenume); 
        returnPacient.setTelefon(Telefon); 
        returnPacient.setAdresa(AdresaBuletin); 
        returnPacient.setEmail(AdresaEmail); 
        returnPacient.setDataNasterii(DataNasterii); 
        returnPacient.setSex(Sex); 
        cursor.moveToNext(); 

       } while (!cursor.isAfterLast()); 
      } 
     } finally { 
      if (cursor != null) { 
       cursor.close(); 
      } 
     } 

     return returnPacient; 
    } 

但沒有奏效。我收到這個錯誤,我不明白爲什麼,因爲我確認我有數據庫中的數據:

04-14 10:35:33.478: E/AndroidRuntime(278): FATAL EXCEPTION: main 
04-14 10:35:33.478: E/AndroidRuntime(278): java.lang.NullPointerException 
04-14 10:35:33.478: E/AndroidRuntime(278): at com.example.medicaldoi.ShowInfo$1.onClick(ShowInfo.java:53) 
04-14 10:35:33.478: E/AndroidRuntime(278): at android.view.View.performClick(View.java:2408) 
04-14 10:35:33.478: E/AndroidRuntime(278): at android.view.View$PerformClick.run(View.java:8816) 
04-14 10:35:33.478: E/AndroidRuntime(278): at android.os.Handler.handleCallback(Handler.java:587) 
04-14 10:35:33.478: E/AndroidRuntime(278): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-14 10:35:33.478: E/AndroidRuntime(278): at android.os.Looper.loop(Looper.java:123) 
04-14 10:35:33.478: E/AndroidRuntime(278): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-14 10:35:33.478: E/AndroidRuntime(278): at java.lang.reflect.Method.invokeNative(Native Method) 
04-14 10:35:33.478: E/AndroidRuntime(278): at java.lang.reflect.Method.invoke(Method.java:521) 
04-14 10:35:33.478: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-14 10:35:33.478: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-14 10:35:33.478: E/AndroidRuntime(278): at dalvik.system.NativeStart.main(Native Method) 

有人可以幫助我!

+0

你在ShowInfo.java中的53行是什麼? –

回答

0

您是否使用斷點檢查瞭解哪些變量爲空?代碼中的第53行在哪裏?

你在哪裏實例化你在函數getInfo中使用的變量「text」?你確定這個變量不是null嗎?

+0

這是53行:Pacienti pacienti = pacientiDB.getInfo(text); – Cristina

+0

變量「text」不爲空。我把一個日誌,它顯示我的價值。 @Yoann – Cristina

+0

你用什麼來調試?蝕? –

相關問題