【问题标题】:Getting NullPointer Exception Error while creating and fetching the data from database in android在android中创建和从数据库中获取数据时出现NullPointer异常错误
【发布时间】:2013-12-13 11:52:21
【问题描述】:

大家好,很久以后我在这里发布任何查询。我在以下代码中收到 NullPointer 异常错误:-

public class DBAdapter {

int id = 0;
public static final String KEY_ROWID = "_id";
public static final String KEY_FNAME = "FirstName";
public static final String KEY_LNAME = "LastName";
public static final String KEY_EMAILID = "Email";
public static final String KEY_PASSWORD = "Password";
private static final String TAG = "DBAdapter";

private static final String DATABASE_NAME = "UserDetail";
private static final String DATABASE_TABLE = "tblUserDetail";

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE =  "create table tblUserDetail (_id integer primary key autoincrement, "
        + "FirstName text not null, LastName text, Email text not null, Password text not null );";

private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DBAdapter(Context ctx){
    this.context = ctx;
    DBHelper = new DatabaseHelper(ctx);
}

private static class DatabaseHelper extends SQLiteOpenHelper{

    public DatabaseHelper(Context context) {
            super(context,DATABASE_NAME,null,DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
            db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
            Log.w(TAG, "Upgrading database version from"+ oldVersion +
                    "to"+ newVersion +", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXIST tblUserDetail");
            onCreate(db);
    }
}

    public DBAdapter open() throws SQLException{

        db = DBHelper.getWritableDatabase();
        return this;

    }

    public void close(){
        DBHelper.close();
    }

    public long insertData(String fName,String lName, String emailId, String password){
        ContentValues intialValues = new ContentValues();
        intialValues.put(KEY_FNAME, fName);
        intialValues.put(KEY_LNAME, lName);
        intialValues.put(KEY_EMAILID, emailId);
        intialValues.put(KEY_PASSWORD, password);
        return db.insert(DATABASE_TABLE, null, intialValues);
    }

    public String getAllEntries()
    {
        SQLiteDatabase database = DBHelper.getReadableDatabase();

        Cursor cursor = database.rawQuery(
                    "SELECT FirstName FROM tblUserDetail WHERE _id = 1", null);
                if(cursor.moveToFirst()) {
                    return cursor.getString(0);
                }
                return cursor.getString(0);

    }

}

我在单击按钮时调用insertDatagetAllEntries:-

Submit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
    //      Toast toast = Toast.makeText(getApplicationContext(), "cliecked on submit button", Toast.LENGTH_LONG);
    //      toast.show();

            String str;
            try{
                db.insertData(etFN.getText().toString(), etLN.getText().toString(), etEI.getText().toString(), etPS.getText().toString());

                str = db.getAllEntries();

                Toast toast = Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG);
                toast.show();
            }

            catch(Exception ex){
                 Context context = getApplicationContext();
                 CharSequence text = ex.toString();
                 int duration = Toast.LENGTH_LONG;

                 Toast toast = Toast.makeText(context, text, duration);
                 toast.show();
            }

        } 
    });

请帮助我摆脱这个 NullPointer 异常错误。我们将不胜感激。

我在db.insertData() 行收到错误消息。

【问题讨论】:

  • 哪一行抛出异常?
  • 你能粘贴你的堆栈跟踪吗?我们需要看看到底是什么抛出了这个异常。
  • 请发布您的 logcat 错误
  • Getting NullPointer Exception 好的。但在哪里?
  • @himanshu 如果想要更快的解决方案,请发布您的 logcat。

标签: android sqlite android-sqlite


【解决方案1】:

发生这种情况可能有两个原因。

1) 如果您还没有初始化您的 DBADapter 对象。你刚刚声明了它。

所以初始化它

 db = new DBAdapter(this);

2) 在将数据插入数据库之前,您尚未打开或关闭数据库。所以在插入数据之前先打开你的数据库。

谢谢!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    相关资源
    最近更新 更多