활기찬 월요일 입니다. 

항상 여기서 많은 도움을 얻어 갑니다. ^^)


아래와 같은 코드에서 두가지 질문이 있습니다.

1. String dbPath = getApplicationContext().getDatabasePath(dbName).getPath(); 을 이용할 경우 DB 파일을 찾을 수 없다는 에러가 발생 합니다.

2. 아래와 같이 rawQuery 사용시 NullPointerException이 발생합니다.


...

SQLiteDatabase mDb;

Cursor mCursor;

String[] info;

...

// phonebook 이라는 DB파일을 불러옴

public String[] getDB(){

//String dbName = "phonebook";

//String dbPath = getApplicationContext().getDatabasePath(dbName).getPath();

String dbPath = "/data/data/com.android.besafe/databases/phonebook";

mDb.openDatabase(dbPath,null,SQLiteDatabase.OPEN_READWRITE); //NullPointerException 발생  


for(row=1;row<11;row++){

mCursor = mDb.rawQuery("select name from info where _id='"+row+"'", null);

if (mCursor.getCount() > 0) {

mCursor.moveToFirst();

info[row] = mCursor.toString();

   while (mCursor.moveToNext()) {


   }

 }

}

}


for(row=11;row<21;row++){

mCursor = mDb.rawQuery("select number from info where _id='"+row+"'", null);

mCursor.moveToFirst();

info[row] = mCursor.toString();

}

mDb.close();

return info;

}

...


// getDB 파일을 호출하는 부분

...

startService.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

MySendSMS sms = new MySendSMS();

String[] info=sms.getDB();

}        

        });

...



12-12 07:22:01.364: E/AndroidRuntime(29512): FATAL EXCEPTION: main

12-12 07:22:01.364: E/AndroidRuntime(29512): java.lang.NullPointerException

12-12 07:22:01.364: E/AndroidRuntime(29512): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120)

12-12 07:22:01.364: E/AndroidRuntime(29512): at android.app.PendingIntent.getBroadcast(PendingIntent.java:226)

12-12 07:22:01.364: E/AndroidRuntime(29512): at com.android.besafe.MySendSMS.sendSMS(MySendSMS.java:60)

12-12 07:22:01.364: E/AndroidRuntime(29512): at com.android.besafe.BeSafeActivity$2.onClick(BeSafeActivity.java:51)

12-12 07:22:01.364: E/AndroidRuntime(29512): at android.view.View.performClick(View.java:2485)

12-12 07:22:01.364: E/AndroidRuntime(29512): at android.view.View$PerformClick.run(View.java:9080)

12-12 07:22:01.364: E/AndroidRuntime(29512): at android.os.Handler.handleCallback(Handler.java:587)

12-12 07:22:01.364: E/AndroidRuntime(29512): at android.os.Handler.dispatchMessage(Handler.java:92)

12-12 07:22:01.364: E/AndroidRuntime(29512): at android.os.Looper.loop(Looper.java:123)

12-12 07:22:01.364: E/AndroidRuntime(29512): at android.app.ActivityThread.main(ActivityThread.java:3647)

12-12 07:22:01.364: E/AndroidRuntime(29512): at java.lang.reflect.Method.invokeNative(Native Method)

12-12 07:22:01.364: E/AndroidRuntime(29512): at java.lang.reflect.Method.invoke(Method.java:507)

12-12 07:22:01.364: E/AndroidRuntime(29512): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)

12-12 07:22:01.364: E/AndroidRuntime(29512): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)

12-12 07:22:01.364: E/AndroidRuntime(29512): at dalvik.system.NativeStart.main(Native Method)


왜 이런 현상이 발생하는지 알려주시면 대단히 감사하겠습니다. ^^)