2012-04-24 5 views
2

내 자산에 저장 한 데이터베이스를 사용하여 listview를 채우려고합니다. 나는 지금까지 데이터베이스를 만들 때 앱을 실행할 때 확인하고있다. 현재 문제는 열을 가져 와서 목록보기에 표시하는 방법을 찾는 것입니다. 내 열은 이해하지 못하는 코드를 볼 수 있도록 이름, 위치 및 부서입니다. 누구든지 나를 도울 수 있다면 http://saigeethamn.blogspot.com/2011/02/listview-of-data-from-sqlitedatabase.html 에서 코드를 사용하려고 노력해 왔습니다. 정말 고맙습니다. 감사합니다.app에 데이터베이스 읽기/listview에 표시

편집 : 코드가 나에게 널 포인터 예외를 제공 실행하면

public class Favorites extends ListActivity { 
     public static String tableName = "fac"; 
     private ListView lv; 
     SQLiteDatabase newDB; 
     private ArrayList<String> results = new ArrayList<String>(); 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.favorites); 

      openAndQueryDatabase(); 
      displayResultList(); 
     } 

     private void displayResultList() { 
      TextView tView = new TextView(this); 
      tView.setText("This data is retrieved from the database and only 4 " 
        + "of the results are displayed"); 
      getListView().addHeaderView(tView); 

      setListAdapter(new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, results)); 
      getListView().setTextFilterEnabled(true); 

     } 

     private void openAndQueryDatabase() { 
      try { 
       DataBaseHelper dbHelper = new DataBaseHelper(
         this.getApplicationContext()); 
       newDB = dbHelper.getWritableDatabase(); 
       Cursor c = newDB.rawQuery("SELECT name, position FROM " + tableName 
         + "where ", null); 

       if (c != null) { 
        if (c.moveToFirst()) { 
         do { 
          String name = c.getString(c.getColumnIndex("name")); 
          String position = c.getString(c 
            .getColumnIndex("position")); 
          results.add("name: " + name + ",Position " + position); 
         } while (c.moveToNext()); 
        } 
       } 
      } catch (SQLiteException se) { 
      } finally { 
       if (newDB != null) 
{ 
        newDB.execSQL("DELETE FROM " + tableName); 
       newDB.close(); 
      }} 

     } 
    } 

로그 캣 :

 04-24 04:43:19.064: E/AndroidRuntime(1644): FATAL EXCEPTION: main 
     04-24 04:43:19.064: E/AndroidRuntime(1644): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cerealBarApps/com.cerealBarApps.Faculty_tab}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cerealBarApps/com.cerealBarApps.Favorites}: java.lang.NullPointerException 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.access$1500(ActivityThread.java:132) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.os.Handler.dispatchMessage(Handler.java:99) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.os.Looper.loop(Looper.java:143) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.main(ActivityThread.java:4196) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at java.lang.reflect.Method.invokeNative(Native Method) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at java.lang.reflect.Method.invoke(Method.java:507) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at dalvik.system.NativeStart.main(Native Method) 
     04-24 04:43:19.064: E/AndroidRuntime(1644): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cerealBarApps/com.cerealBarApps.Favorites}: java.lang.NullPointerException 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:1651) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:656) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.widget.TabHost.setCurrentTab(TabHost.java:326) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.widget.TabHost.addTab(TabHost.java:216) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.cerealBarApps.Faculty_tab.onCreate(Faculty_tab.java:55) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 
     04-24 04:43:19.064: E/AndroidRuntime(1644):  ... 11 more 
     04-24 04:43:19.064: E/AndroidRuntime(1644): Caused by: java.lang.NullPointerException 
04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.cerealBarApps.Favorites.openAndQueryDatabase(Favorites.java:63) 
04-24 04:43:19.064: E/AndroidRuntime(1644):  at com.cerealBarApps.Favorites.onCreate(Favorites.java:25) 
04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
04-24 04:43:19.064: E/AndroidRuntime(1644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 

죄송합니다

+0

당신이 당신의 NullPointer 예외 추적을 게시 할 수 있습니까? – vinodn

+0

다른 것이 필요하면 –

+1

알려주세요. 내가보고 싶었던 곳으로 정확하게 로그를 잘라 냈습니다. nullpointer를 일으키는 com.cerealBarApps.Favorites 클래스에서 줄 번호를 알고 싶었습니다. – vinodn

답변

0

아래 한 Statment에서 .. PLZ 을이 시도 넣어주세요 '' 'where'키워드 앞에. 올드

Cursor c = newDB.rawQuery("SELECT name, position FROM " + tableName + "where ", null); 

새로운

Cursor c = newDB.rawQuery("SELECT name, position FROM " + tableName + " where ", null); 
+0

여전히 문제가 남아 있습니다. –

+0

DBHelper 클래스도 잘 작동하는지 확인하십시오. SQLiteDatabase 인스턴스를 returing하고 있는지 확인하십시오. –

+0

내 db helper 클래스는 응용 프로그램 시작시 전화 상에 데이터베이스를 만듭니다. 내 테이블은 이미 내 자산에 저장된 파일에 정의되어 있습니다. 내가해야 할 일은이 파일을 읽고보기에 표시하는 것입니다. –

관련 문제