2017-05-21 54 views
-2

我越來越對下面的代碼行SQLite的選擇查詢返回null時,它不應該

attendanceList = dbHelper.getAttendance(surName, name); 

兩個姓氏和名字都沒有空一空指針異常,有大小()> 0,attendanceList是ArrayList類型的,在這裏是getAttendance功能:

public ArrayList<Attendance> getAttendance(String surName, String name) 
{ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    ArrayList<Attendance> attendanceList = new ArrayList<>(); 

    Cursor cursor = db.rawQuery("SELECT * FROM " + ATTENDANCE_TABLE + " WHERE " + COLUMN_SURNAME + " =? AND " 
      + COLUMN_NAME + " =?", new String[] {surName, name}); 

    if(cursor .moveToFirst()) 
    { 
     while(!cursor.isAfterLast()) 
     { 
      Attendance attendance = new Attendance(); 

      attendance.setDate(cursor.getString(cursor.getColumnIndex(COLUMN_DATE))); 
      attendance.setName(cursor.getString(cursor.getColumnIndex(COLUMN_NAME))); 
      attendance.setSurName(cursor.getString(cursor.getColumnIndex(COLUMN_SURNAME))); 
      attendance.setState(cursor.getString(cursor.getColumnIndex(COLUMN_STATE))); 
      attendance.setTerm(cursor.getInt(cursor.getColumnIndex(COLUMN_TERM))); 
      attendance.setSubject(cursor.getString(cursor.getColumnIndex(COLUMN_SUBJECT_NAME))); 

      attendanceList.add(attendance); 
      cursor.moveToNext(); 
     } 
     cursor.close(); 
     db.close(); 
     return attendanceList; 
    } 
    else 
    { 
     cursor.close(); 
     db.close(); 
     return null; 
    } 
} 

有上述功能無語法錯誤,而且我知道,因爲我看到使用DB瀏覽器中的SQLite的ATTENDANCE_TABLE的內容不應該返回null 。有人可以指出我的代碼有什麼問題嗎?我覺得我寫了1 + 1 = 2,並得到一個錯誤..

+0

有你調用getAttendance函數初始化之前dbHelper? – Pavan

+0

是,在onCreate()方法 – Taivna

+0

堆棧跟蹤添加到問題,請 –

回答

0

試試這個... SQLiteDbHelper是我的數據庫類,其中我的表定義。 table_name是在我的表名存儲

cursor = db.rawQuery("SELECT * FROM "+SQLiteDBHelper.TABLE_NAME+" WHERE "+SQLiteDBHelper.COLUMN_SURNAME+"=? AND "+SQLiteDBHelper.COLUMN_NAME+"=?",new String[] {surName,name}); 

      if (cursor != null) { 
       if(cursor.getCount() > 0) { 

       cursor.moveToFirst(); 
        //Retrieving User SurName and Name 
        String s_name = cursor.getString(cursor.getColumnIndex(SQLiteDBHelper.COLUMN_SURNAME)); 
        String _name= cursor.getString(cursor.getColumnIndex(SQLiteDBHelper.COLUMN_NAME)); 
        Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show(); 
0

字符串我敢肯定,它不是surNamename導致NullpointerException,但dbHelper是。

所以,請檢查您是否此行後初始化您dbHelper

attendanceList = dbHelper.getAttendance(surName, name); 

如果是這樣,然後移動它上面和你的崩潰將是固定的。 希望它有幫助。

+0

我想出了tnx給你們,我初始化了onCreate()方法中的dbHelper,但是我必須在attendanceList = dbHelper.getAttendance(surName,name)行之前再次初始化它,因爲這行代碼在函數內部這不在onCreate()內部 – Taivna