2016-11-18 4 views
1
public class PlaceCallActivity extends BaseActivity { 
    private static final String SELECT_SQL = "SELECT * FROM numbers"; 
    protected void onCreate(Bundle savedInstanceState) { 
      opendatabase(); 
    c = db.rawQuery(SELECT_SQL, null); 
      c.moveToLast(); 
     userNo.setText(c.getString(c.getColumnIndex("number"))); 
     } 
    public void opendatabase(){ 
      db=openOrCreateDatabase("NumberDB", Context.MODE_PRIVATE, null); 
} 

Я хочу, чтобы установить текст последних извлечение данных из столбца «номера» Во время выполнения я получил следующее сообщение об ошибке:Получить последнюю запись SQLite базы данных

CursorIndexOutOfBoundsException: Index -1 requested, with a size of 0 

Ошибка находится на линии, где Я устанавливаю текст.

i.e. "userNo.setText (c.getString (c.getColumnIndex (" number ")));"

+0

Будет ли у отладки и проверить, что значение c.getColumnIndex ("число")? – Raghavendra

+0

Я думаю, проблема в том, что нет данных, которые вы запрашиваете. –

+0

Итак, нет вставленных данных? который я делаю в другом действии – SameerKhan1406

ответ

1

Вы получаете эту ошибку, поскольку в курсоре нет данных, прежде чем извлекать данные из курсора, вам нужно сначала проверить его количество.

if(c.getCount()!=0) 
{ 
    if(c.moveToLast()) 
    { 
    } 
} 
+0

прочитал мой комментарий ниже, пожалуйста, – SameerKhan1406

0
public class PlaceCallActivity extends BaseActivity { 
private static final String SELECT_SQL = "SELECT * FROM numbers"; 
protected void onCreate(Bundle savedInstanceState) { 
     opendatabase(); 
c = db.rawQuery(SELECT_SQL, null); 
    if(c.getCount()>0) 
     { 
     c.moveToLast(); 
    userNo.setText(c.getString(c.getColumnIndex("number"))); 
    } 
    } 
public void opendatabase(){ 
     db=openOrCreateDatabase("NumberDB", Context.MODE_PRIVATE, null); 
} 
+0

Я думаю, что вы почти сделали это, но я страдаю от большей проблемы, я думаю, делая что-то выше, чем это происходит, поскольку я создаю логин с использованием общих настроек и использую это, даже если я удалите мое приложение, которое оно по-прежнему принимает или переходит к другому действию, не приходя к первому, где я вставляю данные. Таким образом, он принимает нулевые значения для этой PlaceCallActivity, поэтому я сделал android: allowBackup = "false" – SameerKhan1406

+0

, после чего я получаю эту ошибку: Выполнение выполнено для задачи ': app: processDebugManifest'. > Не удалось выполнить манифест слияния: приложение атрибута @ allowBackup value = (false) из AndroidManifest.xml: 21: 13-40 \t также присутствует в [com.msg91.sendotp.library: library: 2.7] AndroidManifest.xml: 12: 9-35 value = (true). \t Рекомендация: добавить «инструменты: replace =» android: allowBackup «'to элемент в AndroidManifest.xml: 19: 5-50: 19 для переопределения. – SameerKhan1406

+0

Можете ли вы четко сформулировать свою потребность поэтапно? –

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