0

У меня есть следующие конфигурации базы данныхНевозможно получить автоматическое приращение идентификатора

public static final String ST_ID = "s_id"; 
public static final String ST_NAME = "s_name"; 
public static final String ST_COURSE = "s_course"; 
public static final String DBCREATE_STUDENTDB = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME+" ("     
       + "s_id INTEGER PRIMARY KEY AUTOINCREMENT, " 
       + "s_name VARCHAR, " 
       + "s_course VARCHAR);"; 
     public static final int VERSION = 1; 

Теперь я пытаюсь получить идентификатор

final ContentResolver resolver = getContentResolver(); 
final String[] projection = { StudentDB.ST_NAME, StudentDB.ST_COURSE }; 
Cursor cursor = resolver.query(StudentDataProvider.studentTableUri, projection, null, null, null); 

if (cursor.moveToFirst()) { 
    do { 

     Log.wtf("ID", ""+cursor.getString(cursor.getColumnIndex(StudentDB.ST_ID))); 

    } while (cursor.moveToNext()); 
} 

Я получаю сообщение об ошибке на этом.

10-02 07:14:29.788: E/AndroidRuntime(2252): java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 

однако следующий код работает для другого столбца

Log.wtf("List", ""+cursor.getString(cursor.getColumnIndex(StudentDB.ST_COURSE))); 

чем проблема?

+0

cursor.getColumnIndex (StudentDB.ST_ID) return INTEGER, не используйте cursor.getString(), используйте cursor.getInt(); –

+0

Это не проблема – LynAs

ответ

2

Вы не добавили свой идентификатор в своем изменении проекционной по адресу:

final String[] projection = { StudentDB.ST_NAME, StudentDB.ST_COURSE,StudentDB.ST_ID}; 
2
final String[] projection = { StudentDB.ST_NAME, StudentDB.ST_COURSE }; 

Если в вашей проекции нет идентификатора, курсор не имеет поля, называемого так.

ли это:

final String[] projection = { StudentDB.ST_ID, StudentDB.ST_NAME, StudentDB.ST_COURSE }; 

@Sardor Dushamov, был прав тоже, если идентификатор автоинкремент, используйте GetInt не GetString.

0

посещайте проекция String [], вы не добавить StudentDB.ST_ID

Смежные вопросы