2014-10-25 2 views
-1

Lollipop 용 21 API를 사용하여 예약 처리를 위해 소규모 비즈니스 용 데이터베이스를 작성하려고합니다. 아래에 DBAdapter 및 예약 클래스를 포함 시켰습니다. 제출을 누르려고하면이 오류가 발생합니다 (StackOverflow를 통해 전체 오류를 게시 할 수는 없지만 일부는 여기에 있습니다 ->
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.database.sqlite.SQLiteOpenHelper.getWritableDatabase()' on a null object reference at net.stein13.reserveit.DBAdapter.open(DBAdapter.java:53) at net.stein13.reserveit.NewReservation.submitReservation(NewReservation.java:29) AP 컴퓨터 과학 교사와 함께 알아 내려고했지만, '는 t는 ... 안드로이드에 대해 충분히 저를 알아내는 데 도움 알고SQLiteDatabase를 열지 못했습니다?

새로운 예약 클래스 - http://pastebin.com/ALn9Q2sg DBAdapter 클래스 - http://pastebin.com/07PZSiT1 어떤 도움이 많이 미리 감사합니다 !! 감사하겠습니다

+0

pastebins가 컴파일하고 실행중인 코드와 같으십니까? 오류 메시지의 행 번호가 전혀 일치하지 않습니다. –

+0

예 마지막으로 컴파일 한 시점에서 직접 코드를 가져 왔으며 AVD에서 실행하고 Submit를 클릭했을 때 오류가 발생했습니다. – Rudi

+0

오류 메시지는 NPE가 53 행에 있음을 알려줍니다 'DBAdapter.java'의 IDE에서이 행을 클릭하면 문제가있는 코드 행으로 바로 이동합니다. 그러나 pastebin에서이 행은 비어 있습니다. 컴파일하고 앱을 실행 한 시간과 pastebin을 만든 시간 사이에 빈 줄을 삽입 한 것처럼 보입니다. 앞으로 혼란을 야기 할 수 있으므로 조심하십시오. –

답변

2

오류! DBHelper 멤버 변수를 초기화하지 않기 때문에 발생합니다. DBAdapterSQLiteOpenHelper으로 확장되므로 DBHelper은 전혀 필요하지 않습니다. 이는 DBAdapter이 모두 SQLiteOpenHelper이기 때문입니다. 즉 DBAdapter에 직접 SQLiteOpenHelper 메서드를 모두 호출 할 수 있습니다. 예를 들어, 당신은 또한 완전히 close()을 제거해야

db = getWritableDatabase(); 

open() 방법을 변경해야합니다. SQLiteOpenHelper에는 이미 모든 작업을 수행하는 close() 메소드가 있습니다.

+0

정말 고마워요! 그걸 완벽하게 고쳐서 이제는 사소한 것들을 고쳐야 만합니다. 그러나 실제로 데이터베이스가 있습니다! :) – Rudi

관련 문제