을 가진 Nullpointer 예외를 우리는 데이터베이스의 열 정보를 읽고 싶습니다. 예제를 PRAGMA 테이블 정보로 찾았습니다. 이제 우리는 응용 프로그램을 실행하고 nullpointerexcpetion과 함께 실패하고 우리는 왜 이런 일이 발생하는지 전혀 모릅니다. 다음은 우리 강령의 일부입니다.안드로이드 프로젝트에서 Pragma table_info
public String[] getTableColumns(SQLiteDatabase db, String tableName)
{
Log.d("ArtDbHandler: ", "getTableColumns Start");
Cursor cursor = null;
cursor = db.rawQuery("PRAGMA table_info(" + tableName + ")", null);
Log.d("ArtDbHandler: ", "getTableColumns cnt:"+cursor.getCount());
String[] allColumns = new String[cursor.getCount()];
int i = 1;
while (!cursor.isAfterLast())
{
Log.d("ArtDbHandler: ", "getTableColumns i:"+i);
String columnName = cursor.getString(TABLE_INFO_PRAGMA_COLUMNNAME_INDEX);
Log.d("ArtDbHandler: ", "getTableColumns columnName:"+columnName);
allColumns[i] = columnName;
++i;
cursor.moveToNext();
}
cursor.close();
Log.d("ArtDbHandler: ", "getTableColumns Ende");
return allColumns;
}
LogCat에서 "getTableColumns Start"로그를 얻으면 예외가 발생합니다. 메소드를 우리의 DBHandler 클래스에 정의 된 sqlitedatabase 오브젝트와 tablename으로 호출합니다. 어떤 아이디어?
고맙습니다. 4 도움. T.
는 로그 캣:
-
12-11 19 : 03 : 56.634 : D /에서 onCreate 메인 (3325)에서 onCreate 12-11
다음은 로그 캣이다 : 03 : 56.634 : D/MediumDAO : (3325) : MediumDAO 시작 12-11 19 : 03 : 56.644 : D/MediumDAO : (3325) : MediumDAO Ende 12-11 19 : 03 : 56.644 :
D/ArtDbHandler :(3325) : getTableColumns 시작 : 중간 12-11
19 : 03 : 56.644 : D/AndroidRuntime (3325) : VM 1 종료 2-11
19 : 03 : 56.644 : W/dalvikvm (3325) threadid = 1 :
캐치되지 제외 종료 스레드 (그룹 = 0x40a71930) 12-11 19 : 03 : 56.664 :
E/AndroidRuntime (3325) : 치명적인 예외 : 03 : 19 12-11 주요 56.664 :
E/AndroidRuntime (3325) : java.lang.RuntimeException가가 : 없습니다
활동
ComponentInfo {com.example.artdb/com.example을 시작합니다. artdb.ArtDbMainActivity} : java.lang.NullPointerException이 12-11 19 : 03 : 56.664 : (3325)
E/AndroidRuntime :
android.app.ActivityThread.performLaunchActivity (ActivityThrea에서 d.java:2180) 12-11 19 : 03 : 56.664 : E/AndroidRuntime (3325) :
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2230) 12-11 19 : 03 : 56.664 : E/AndroidRuntime (3325) : 03 : 56.664 : E/AndroidRuntime (3325)
android.app에서
android.app.ActivityThread.access $ 600 (ActivityThread.java:141) 12-11
19에서. ActivityThread $ H.handleMessage (ActivityThread.java:1234)
12-11 19 : 03 : 56.664 : E/AndroidRuntime (3325) :
android.os.Handler.dispatchMessage (Handler.java:99) 12-11
19 : 03 : 56.664 : E/AndroidRuntime (3325) :
android.os.Looper.loop (Looper.java:137) 12-11 19 : 03 : 56.664 :
E/AndroidRuntime (3325) :
android.app.ActivityThread.main에서 (ActivityThread.java:5041) 12-11
19 : 03 : 56.664 : E/AndroidRuntime (3325) : 03 : 56.664 :
java.lang.reflect.Method.invokeNative (기본 방법) 12-11
19시 E/AndroidRuntime (3325) :
java.lang.reflect.Method.invoke (Method.java:511) 12-11 19:03:56.664 :
E/AndroidRuntime (3325)에서
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:793) 12-11 19 : 03 : 56.664 :/AndroidRuntime (3325) E : 03 : 56.664 :
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560) 12-11
19시 E/AndroidRuntime (3325) :
에서 dalvik.system.NativeStart.main (네이티브 메서드) 12-11 19 : 03 : 56.664 :
E/AndroidRuntime (3325) : 원인 : java.lang.NullPointerException
12-11 19 : 03 : 56.664 : E/AndroidRuntime (3325) :
com.example.artdb.ArtDbHandler.ge tTableColumns (ArtDbHandler.java:182) 12-11 19 : 03 : 56.664 : E/AndroidRuntime (3325) :
com.example.artdb.MediumDAO.setColumns (MediumDAO.java:101)에서 12-11
(19) : 03 : 56.664 : E/AndroidRuntime (3325) :
com.example.artdb.ArtDbMainActivity.onCreate (ArtDbMainActivity.java:20) 12-11 19 : 03 : 56.664 : E/AndroidRuntime (3325) :
android.app.Activity.performCreate (Activity.java:5104) 12-11
19 : 03 : 56.664 : E/AndroidRuntime (3325) :
android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1080)에서 12-11 19 : 03 : 56.664 : E/AndroidRuntime (3325) : 01에 23, android.app.ActivityThread.performLaunchActivity (ActivityThre
ad.java:2144)
도 게시 할 수 있습니다 cat..okay – Elltz
여기에 logcat이 있습니다. 메인 포스트 – hat
arg로 전달하는'db' 변수를 어떻게 초기화하고 있습니까? – laalto