NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Verquido
Tvůrce
Avatar
Verquido:4.12.2016 15:13

Couldn't read row 0, col -1 from CursorWindow

Na internetu jsem našel že je to chyba v tom že v databázi není dostatek věcí, přidal jsem tak o 10 záznamů víc a furt to vyhazuje tuhle chybu. Nevíte co s tím? :) Dík

Editováno 4.12.2016 15:14
 
Odpovědět
4.12.2016 15:13
Avatar
Odpovídá na Verquido
Neaktivní uživatel:4.12.2016 15:56

Bez kódu to asi nezvládnem.

Nahoru Odpovědět
4.12.2016 15:56
Neaktivní uživatelský účet
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Verquido:4.12.2016 18:33

Jestli bude stačit obsluha výpisu tak tady

public String getStringData(){
    String data = "";
    SQLiteDatabase db = getWritableDatabase();
    String query = "SELECT * FROM " + TABLE_WORDS + " WHERE 1";

    Cursor c = db.rawQuery(query, null);
    c.moveToFirst();

    do {
        if (c.getString(c.getColumnIndex("cz")) != null) {
            if (c.getString(c.getColumnIndex("en")) != null) {
                data += c.getString(c.getColumnIndex("cz"));
                data += " - ";
                data += c.getString(c.getColumnIndex("en"));
                data += "\n";
            }
        }
    } while(!c.isAfterLast());


    db.close();
    return data;
}

potom ještě bych to potřeboval převést do listBoxu, ale když bude fungovat tohle tak to už by poto neměl být takový problém :)

Editováno 4.12.2016 18:34
 
Nahoru Odpovědět
4.12.2016 18:33
Avatar
Odpovídá na Verquido
Neaktivní uživatel:4.12.2016 20:12

Proč používáš tohle?

c.getString(c.getColumnIndex("cz"))

Proč ne

c.getString("cz")

Proč je za sql dotazem podmínka where true?

A proč to neudělat jako třeba tady?
https://www.tutorialspoint.com/…ite_java.htm

Nebo nějakou moderní cestou?

Nahoru Odpovědět
4.12.2016 20:12
Neaktivní uživatelský účet
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Verquido:4.12.2016 20:51

Dělám to podle tutoriálu
https://youtu.be/Jcmp09LkU-I?…

c.getString(c.getColumnIndex("cz"))

To je tam podle mě k tomu aby to vzalo ten string, který je na aktuálním řádku ve sloupci cz.

Ta podmínka where true je tam prý taky kvůli něčemu takovýmu aby to bralo všechny sloupce i řádky.

 
Nahoru Odpovědět
4.12.2016 20:51
Avatar
Odpovídá na Verquido
Neaktivní uživatel:4.12.2016 21:05

Ta where podmínka je v tomhle případě úplně zbytečná. Občas se používá, když bych chtěl přidávat další podmínky spojený AND, ale to vůbec není tenhle případ. Na jakým řádku ten program padá?

Nahoru Odpovědět
4.12.2016 21:05
Neaktivní uživatelský účet
Avatar
Verquido
Tvůrce
Avatar
Verquido:4.12.2016 23:04

MyDBHandler.get­StringData(MyD­BHandler.java:61)
at cz.dusanmarsa­.entester.AllWor­ds.printDataba­se(AllWords.ja­va:24)
at cz.dusanmarsa­.entester.AllWor­ds.onCreate(A­llWords.java:20)

Error to ukazuje na řádku číslo 61. :)

60 do {
61            if (c.getString(c.getColumnIndex("cz")) != null) {
62                if (c.getString(c.getColumnIndex("en")) != null) {
63                    data += c.getString(c.getColumnIndex("cz"));
64                    data += " - ";
65                    data += c.getString(c.getColumnIndex("en"));
66                    data += "\n";
67                }
68            }
69        } while(!c.isAfterLast());
Editováno 4.12.2016 23:05
 
Nahoru Odpovědět
4.12.2016 23:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.