2014-11-04 40 views
0

喜retriving数据的所有我试图从一个表称为接触retrive的数据,但它给我的空指针异常而从数据库中的Android

Cursor cursor = database.query(ContactsDBOpenHelper.TABLE_CONTACTS,allcolumns,null,null,null,null,null); 

一个空指针异常有谁能够提出什么错? 我有适当的数据在表中。

公共类ViewAllActivity扩展ListActivity {

SQLiteOpenHelper dbhelper; 
SQLiteDatabase database; 
ContactsDataSource contactsDataSource; 

public static final String[] allcolumns = { 
     ContactsDBOpenHelper.COLUMN_SEQUENCE, 
     ContactsDBOpenHelper.COLUMN_NAME, 
     ContactsDBOpenHelper.COLUMN_DEPT, 
     ContactsDBOpenHelper.COLUMN_EMAIL, 
     ContactsDBOpenHelper.COLUMN_PHONE, 
     ContactsDBOpenHelper.COLUMN_ADDRESS, 
     ContactsDBOpenHelper.COLUMN_ZIPCODE 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list); 

    contactsDataSource = new ContactsDataSource(this); 
    contactsDataSource.open(); 
    dbhelper = new ContactsDBOpenHelper(this); 
    dbhelper.getWritableDatabase(); 

    List<Contact> contacts = viewAllC(); 
    ArrayAdapter<Contact> adapter = new ArrayAdapter<Contact>(ViewAllActivity.this,R.layout.list,contacts); 
    setListAdapter(adapter); 

} 

public List<Contact> viewAllC() { 
    List<Contact> contacts = new ArrayList<Contact>(); 
    Cursor cursor = database.query(ContactsDBOpenHelper.TABLE_CONTACTS,allcolumns,null,null,null,null,null); 
    Log.i("LOGCAT", "rows returned : " + cursor.getCount()); 
    Contact contact; 
    if(cursor.getCount()>0) { 
     while(cursor.moveToNext()) { 
      contact = new Contact(); 
      contact.setSequence(cursor.getLong(cursor.getColumnIndex(ContactsDBOpenHelper.COLUMN_SEQUENCE))); 
      contact.setName(cursor.getString(cursor.getColumnIndex(ContactsDBOpenHelper.COLUMN_NAME))); 
      contact.setDepartment(cursor.getString(cursor.getColumnIndex(ContactsDBOpenHelper.COLUMN_DEPT))); 
      contact.setEmail(cursor.getString(cursor.getColumnIndex(ContactsDBOpenHelper.COLUMN_EMAIL))); 
      contact.setPhone(cursor.getString(cursor.getColumnIndex(ContactsDBOpenHelper.COLUMN_PHONE))); 
      contact.setAddress(cursor.getString(cursor.getColumnIndex(ContactsDBOpenHelper.COLUMN_ADDRESS))); 
      contact.setZipCode(cursor.getLong(cursor.getColumnIndex(ContactsDBOpenHelper.COLUMN_ZIPCODE))); 
      contacts.add(contact); 
     } 
    } 
    return contacts; 

} 

}

This is My open helper 
 

 
public class ContactsDBOpenHelper extends SQLiteOpenHelper { 
 

 
public ContactsDBOpenHelper(Context context) { 
 
\t \t super(context, DATABASE_NAME, null, DATABASE_VERSION); 
 
\t } 
 

 
\t @Override 
 
\t public void onCreate(SQLiteDatabase db) { 
 
\t \t db.execSQL(TABLE_CREATE); 
 
\t \t Log.i(LOGTAG, "Table has been created"); 
 
\t } 
 

 
\t @Override 
 
\t public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
 
\t \t db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); 
 
\t \t onCreate(db); 
 
\t } 
 

 

 

 
}

+2

您可以发布您的logcat – ashutiwari4 2014-11-04 11:40:34

+0

Log.i(“logcat的”,“返回的行:” + cursor.getCount());什么来r在这里 – 2014-11-04 11:41:23

+0

它不去那里,因为它有一个例外,在它上面的线 – Makwana 2014-11-04 11:42:31

回答

0

你忘了初始化database

首先实例数据库助手,然后调用getWritableDatabase()它来获得SQLiteDatabase可以一起工作:

SQLiteOpenHelper helper = new ContactsDBOpenHelper(this); 
database = helper.getWritableDatabase(); 
+0

如何初始化数据库和数据库帮助? – Makwana 2014-11-04 11:51:21

+0

首先,您需要创建一个扩展“SQLiteOpenHelper”的类。 – laalto 2014-11-04 11:56:21

+0

我已经创建了ContactsOpenHelper该怎么做 – Makwana 2014-11-04 11:58:37