2012-09-09 2 views
0

Я написал код для сохранения изображения в sqlitedatabase, а также написал метод для получения записей, но при получении данных я получаю исключение как исключение Nullpointer. Я делаю что-то неправильно в selectall метод?Исключение при отправке данных из SqliteDatabase

public class DBUserAdapter { 

    private static final String DATABASE_NAME = "users"; 
    private static final int DATABASE_VERSION = 1; 

    private static final String USERDETAILS= 
      "create table userdetails(usersno integer primary key autoincrement,photo BLOB,date text not null);"; 

    private Context context = null; 
    private DatabaseHelper DBHelper; 
    private SQLiteDatabase db; 
    public DBUserAdapter(Context context) { 
     this.context = context; 
     DBHelper = new DatabaseHelper(context); 

    } 
    private static class DatabaseHelper extends SQLiteOpenHelper 
    { 
     DatabaseHelper(Context context) 
     { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     public void onCreate(SQLiteDatabase db) { 
      db.execSQL(USERDETAILS); 

     } 

     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // TODO Auto-generated method stub 
      db.execSQL("DROP TABLE IF EXISTS users"); 
      onCreate(db); 
     } 
    } 


    public void open() throws SQLException 
    { 
     db = DBHelper.getWritableDatabase(); 
     return; 
    } 

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


    public long insert(byte[] photo, String date) 
    { 


     ContentValues initialValues = new ContentValues(); 
     initialValues.put("photo", photo); 
     initialValues.put("date", date); 
     // initialValues.put(KEY_TIME, time); 
     Log.d("inotvaluessssssssss",initialValues.toString()); 
     Log.d("dbbbbbbbbbb++++++*******", db.toString()); 
     return db.insert("userdetails", null, initialValues); 

    } 

    public Cursor selectAll(String TABLE_NAME, String COLUMNS, String SELECTION, String[] SELECTION_ARGS, 
      String GROUP_BY, String HAVING, String OREDER_BY) { 
     // TODO Auto-generated method stub 
     Cursor cursor = this.db.query(TABLE_NAME, new String[] { COLUMNS }, 
       SELECTION, SELECTION_ARGS, GROUP_BY, HAVING, OREDER_BY); 
     return cursor; 

    } 


} 
+0

пожалуйста, более конкретно, за исключением. вставить в журнал. – kdehairy

ответ

0

создать ArrayList, который будет хранить все данные, собранные из базы данных.

ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>(); 

Это вызов базы данных, который создает объект «курсор». Объект курсора хранит информацию, собранную из базы данных, и используется для повторения данных.

Complet код здесь ...

public ArrayList<ArrayList<Object>> getAllRowsAsArrays() 
    { 

     ArrayList<ArrayList<Object>> dataArrays = new ArrayList<ArrayList<Object>>(); 


     Cursor cursor; 

     try 
     { 
      // ask the database object to create the cursor. 
      cursor = db.query(
        TABLE_NAME, 
        new String[]{TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO}, 
        null, null, null, null, null 
      ); 

      // move the cursors pointer to position zero. 
      cursor.moveToFirst(); 

      // if there is data after the current cursor position, add it 
      // to the ArrayList. 
      if (!cursor.isAfterLast()) 
      { 
       do 
       { 
        ArrayList<Object> dataList = new ArrayList<Object>(); 

        dataList.add(cursor.getLong(0)); 
        dataList.add(cursor.getString(1)); 
        dataList.add(cursor.getString(2)); 

        dataArrays.add(dataList); 
       } 
       // move the cursor's pointer up one position. 
       while (cursor.moveToNext()); 
      } 
     } 
     catch (SQLException e) 
     { 
      Log.e("DB Error", e.toString()); 
      e.printStackTrace(); 
     } 

     // return the ArrayList that holds the data collected from 
     // the database. 
     return dataArrays; 
    } 
Смежные вопросы