2012-01-12 17 views
7

Czy istnieje limit wierszy dla tabeli sql lite? Moja aplikacja podaje błąd "brak takiej tabeli x ...", gdy ta tabela ma więcej niż 6000 wierszy. Poniżej 6000 wierszy, nie podawaj żadnych błędów.Maksymalna liczba wierszy w tabeli sqlite?

Dziękuję.

To jest zapytanie.

db = (new DatabaseHelper(this)).getWritableDatabase(); 

    cursor = db.rawQuery("SELECT continentes._id, continentes.ContinenteID, continentes.Continente" 
      + " FROM continentes" 
      + " WHERE continentes.Continente LIKE ?" 
      + " GROUP BY continentes.ContinenteID, continentes.Continente ORDER BY continentes.Continente", 
       new String[]{"%" + searchText.getText().toString() + "%"}); 

To gdzie ja utworzyć tabelę

@Override 
public void onCreate(SQLiteDatabase db) { 
    String s; 
    try { 
     Toast.makeText(context, "Creating Database", 2000).show(); 
     InputStream in = context.getResources().openRawResource(R.raw.continentes); 
     DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
     Document doc = builder.parse(in, null); 
     NodeList statements = doc.getElementsByTagName("statement"); 
     for (int i=0; i<statements.getLength(); i++) { 
      s = statements.item(i).getChildNodes().item(0).getNodeValue(); 
      db.execSQL(s); 
     } 
    } catch (Throwable t) { 
     Toast.makeText(context, t.toString(), 50000).show(); 

rozwiązany !!! Właśnie dowiaduję się, dlaczego mam ten problem. Ponieważ pliki, których używam w Data do tworzenia i zapełniania bazy danych sql, nie mogą mieć więcej niż 1,2 MB. Rozdzielam je i nie mam więcej problemów. Dziękuje za wszystko.

+3

Czy możesz opublikować zapytanie? Limit wierszy jest praktycznie nieosiągalny – Dyonisos

+0

Zaktualizuj wpis kodem zapytania. – filoli

+0

Czy możesz podać nam informacje na temat logcat? – prolink007

Odpowiedz

6

maksymalną liczbę wierszy w tabeli

teoretyczna maksymalna liczba wierszy tabeli jest 2^64 (+18446744073709551616 lub około 1.8e + 19). Ten limit jest nieosiągalny, ponieważ maksymalny rozmiar bazy danych wynoszący 14 terabajtów zostanie osiągnięty jako pierwszy. Baza danych 14 terabajtów może pomieścić nie więcej niż około 1e + 13 wierszy, a następnie tylko wtedy, gdy nie ma indeksów i jeśli każdy wiersz zawiera bardzo mało danych.

stąd: http://www.sqlite.org/limits.html

+0

Przeczytałem to, uwierz mi. Po prostu nie rozumiem, dlaczego w moim kodzie maksymalne to, że on idzie, nie daje tego błędu 6000 wierszy. Dzięki i tak – filoli

7

można uzyskać standardowe informacje o limits of SQLite jednak, że nie będzie to, co jest przyczyną problemu, ponieważ granica jest rzeczywiście bardzo wysoka. (2 do potęgi 64!)

Najprawdopodobniej masz problem z tym, jak aplikacja wstawia rekordy i/lub typy wprowadzanych rekordów.

Czy możesz zamieścić kod aplikacji i sposób obsługi wstawki? Mogę zmienić moją odpowiedź po przeczytaniu przez nią.

Jako dodatkowy cynk, upewnij się, że masz ustawione:

Cursor myCursor = db.rawQuery("PRAGMA synchronous=OFF", null); 
myCursor.close(); 

ponieważ może to naprawdę improve the performance swoich większych wstawek masowych.

+0

Mam zaktualizować post z kodem zapytania. Dziękuję – filoli

1

Nie ma takich limitów, patrz poniżej:

Mówi:

maksymalna liczba wierszy w tabeli

teoretyczna maksymalna liczba wierszy tabeli jest 264 (+18446744073709551616 lub około 1.8e + 19). Ten limit jest nieosiągalny , ponieważ maksymalny rozmiar bazy danych wynoszący 14 terabajtów zostanie osiągnięty jako pierwszy. Baza danych 14 terabajtów może pomieścić nie więcej niż około 1e + 13 wierszy, a następnie tylko wtedy, gdy nie ma indeksów i jeśli każdy wiersz zawiera bardzo mało danych.

0

Maksymalna liczba rzędów to 2^64.

Oto limitation page.

+0

tak, ale limit nie wynosi 6000 wierszy. Więc nie rozumiem, dlaczego aplikacja nie tworzy tabeli z ponad 6000 wierszy. – filoli

+0

Twój komentarz wydaje się inny niż Twoje pytanie. Czy pojawia się problem podczas generowania tabeli lub przy kwarantannie? Logcat byłby pomocny. – prolink007

+0

Właśnie umieściłem tam kota z bali. dzięki – filoli

Powiązane problemy