2013-12-13 24 views
0

很长一段时间后你好人,我在这里发布任何查询。我得到下面的代码空指针异常错误: -在Android中创建和从数据库中获取数据时获取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(); 
      } 

     } 
    }); 

请帮我摆脱这个空指针异常错误的每一个帮助将不胜感激。

我收到db.insertData()行的错误。

+0

哪一行是抛出异常? –

+0

你可以粘贴你的堆栈跟踪吗?我们需要看看究竟是抛出这个异常。 – osayilgan

+2

请发布您的logcat错误 – dipali

回答

1

它发生可能有两个原因。

1)如果您尚未初始化您的DBADapter对象。你刚刚宣布它。

所以初始化

db = new DBAdapter(this); 

2)您没有打开或之前插入数据关闭数据库到数据库中。所以在插入数据之前先打开数据库。

谢谢!

+0

没有成功的兄弟仍然得到相同的错误。 – himanshu

+0

你有没有在插入数据之前打开你的数据库? – Piyush

+0

thanx兄弟现在正在工作... – himanshu