これまでのすべての助けてくれてありがとう。私は正常に自分のデータベースを作成し、sqlite
ブラウザでそれを見た。私は別々に各列の値を取得したい。これはDBHelper
クラスに私のコードです:ログ-CATにSQLiteデータベースから値を取得Android
public TingTingUser getCurrentUser(int id){
SQLiteDatabase currDB = databaseManager.getWritableDatabase();
Cursor cursor = currDB.query(true, TABLE_NAME, new String[]{COL_ID, COL_USER_ID, COL_FULL_NAME, COL_GENDER, COL_DOB, COL_MOBILE_NUM, COL_OCCUPATION, COL_ORGANIZATION}, COL_ID + "=?", new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null && cursor.moveToFirst()){
TingTingUser user = new TingTingUser(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7));
return user;
}
return null;
}
、値が正しく来ているが、私の活動class
で、それは例外をスローします。ここでは個々の値を取得するための私のコードは次のとおりです。
マイDatabaseUtils
クラス:
public class DatabaseUtils extends AppCompatActivity {
private static final String TAG = DatabaseUtils.class.getSimpleName();
protected static DBHelper helper;
public static Context context;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
helper = new DBHelper(this);
context = this;
}
public static String getUserPhoneNumber(){
TingTingUser user = helper.getCurrentUser(1);
String number = user.getMobileNumber();
Log.d(TAG, "Phone Number from DB is:\t" + number);
if (number == null){
return null;
}
return number;
}
public static String getUserNameFromDB(){
TingTingUser user = helper.getCurrentUser(1);
String name = user.getDisplayName();
if (name == null){
return null;
}
return name;
}
public static boolean saveGalleryImageToDB(Uri uri){
helper.open();
InputStream inputStream = null;
try {
inputStream = context.getContentResolver().openInputStream(uri);
byte[] inputData = AppUtils.ImageUtils.getBytes(inputStream);
helper.saveGalleryImage(inputData);
helper.close();
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
helper.close();
}
return false;
}
public static boolean loadImage(Context context, ImageView imageView){
try{
helper.open();
byte[] bytes = helper.getImage();
helper.close();
Bitmap bitmap = AppUtils.ImageUtils.getImage(bytes);
Uri uri = AppUtils.ImageUtils.getImageUri(context, bitmap);
imageView.setImageBitmap(AppUtils.ImageUtils.getImage(bytes));
return true;
} catch (Exception ex){
ex.printStackTrace();
}
return false;
}
}
:
String phone = DatabaseUtils.getUserPhoneNumber();
Log.d(TAG, "Phone Number form DB is:\t" + phone);
TingTingUser
は、基本的な情報と私のユーザーのモデルクラスでありますDatabaseUtils
クラスでデモされています。 logcatで
例外メッセージ:
に起因:java.lang.NullPointerExceptionが仮想メソッドを起動しようとする「com.billionusers.tingting.model.TingTingUser com.billionusers.tingting.db.DBHelper.getCurrentUser (int) 'null nullオブジェクト参照で com.billionusers.tingting.db.DatabaseUtils.getUserPhoneNumber(DatabaseUtils.java:39) com.billionusers.tingting.activities.EditProfileActivity.onCreate(EditProfileActivity.java:89) android.app.Activity.performCreate(Activity.java:5990) android.app.Instrumentation.callAct android.app.ActivityThread.access $ 800からandroid.app.ActivityThread.performLaunchActivityでivityOnCreate(Instrumentation.java:1106) android.app.ActivityThread.handleLaunchActivityで(ActivityThread.java:2278) (ActivityThread.java:2387) (ActivityThread.java:151) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303) (android.os.Handler.dispatchMessage(Handler.java:102) android.os.Looper.loop (Looper.java:135) android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(ネイティブメソッド) at java.lang.reflect.Method.invoke(私thod.java:372)com.android.internal.os.ZygoteInit.mainでcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903) で (ZygoteInit.java:698)
このエラーを解決するにはどうすればよいですか?おかげさまで ここで
私は別に列の値を取得したいです。私を見て案内してください。もう一度ありがとう。
ここで、String phone = DatabaseUtils.getUserPhoneNumber();を呼び出しています。 –
私の活動では、私はdb値を使用したい、申し訳ありませんクラスが長すぎる、スペースを取るでしょう –
あなたは別の活動からこれを呼び出すのですか? –