2015-03-28 3 views
0

Привет, ребята, у меня есть огромная проблема, которая не может быть повторно ... просто, у меня есть ListView, и когда y щелчок в одном элементе ListView я получаю «Rubro» этого элемента, и все в порядке ... проблема в том, что у меня есть метод, который я делаю с запросом comapre этого Rubro и получаю Long att из таблицы, но запрос не работает !! но я знаю, что запрос хорош, потому что я доказываю это с помощью DB Brwoser для SQLite !! так вот код, где я вызвать метод:Query (запрос хорош !!) в Listview и DialogFragment

public void onClick(DialogInterface dialog, int id) { 

    TextView selectR = (TextView) view.findViewById(R.id.Rubro); 
    TextView selectV = (TextView) view.findViewById(R.id.Valor); 
    Long ac = db.Buscar_Rubro(selectR.getText().toString()); //THIS IS THE METHOD! 
    EditText r = (EditText) dialogV.findViewById(R.id.Mod); 
    Long Sum = Long.parseLong(r.getText().toString()); 
    db.ModRubros(Long.parseLong(selectV.getText().toString()),ac,Sum); 
    Cursor cT = db.ListarRubros();//RefreshRubros(cT, from, to); 
} 

А вот метод:

public long Buscar_Rubro(String Rubro){ 

    SQLiteDatabase DB = database.getReadableDatabase(); 

    String Query ="SELECT " + Database.ValorActrual + " FROM "+ Database.Taba_Rubros + " WHERE " + Database.Rubro + " LIKE '"+ Rubro +"'" ; 
    Cursor c = DB.rawQuery(Query,null); 

     Long ac = c.getLong(1); 
    return ac; 
} 

Пожалуйста, помогите мне! Я потерял весь день, чтобы исправить это!

PD: Это ошибка, которую я получаю, но это obvios, потому что запрос не работает!

android.database.CursorIndexOutOfBoundsException: Индекс -1 просил, с размером 1

+0

сделать это как 'Long ас = c.getLong (0); ' –

+0

MD Я делаю это, чтобы поблагодарить! – RicarlpDvelop

ответ

1

Вы должны сделать как

String Query ="SELECT " + Database.ValorActrual + " FROM "+ Database.Taba_Rubros + " WHERE " + Database.Rubro + " LIKE '"+ Rubro +"'" ; 
    Cursor c = DB.rawQuery(Query,null); 

    if (c != null && c.moveToFirst()) { 
    Long ac = c.getLong(0); 
    } 
+0

СПАСИБО ВАМ БОЛЬШЕ !! ЭТО РАБОТА! Можете ли вы немного объяснить мне почему? – RicarlpDvelop

+0

@RicarlpDvelop. Просто вы пытаетесь получить 'c.getLong (1'), но ваш курсор имеет только один столбец fetch' (Database.ValorActrual) ', и вы получите это значение с помощью' c.getLong (0) ' –

+0

@ RicarlpDvelop привет приветствую! –

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