2012-01-12 48 views
7

Bir sql lite tablosu için satır sınırı var mı? Uygulamamda bu tablo 6000'den fazla satır olduğunda "böyle bir tablo yok ..." hatası veriyor. 6000 satırın altında, herhangi bir hata vermeyin.Bir sqlite tablosundaki maksimum satır sayısı?

Teşekkür ederiz.

Bu, sorgudur. i

@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(); 

ÇÖZÜLDÜ masayı oluşturmak nerede

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() + "%"}); 

budur !!! Sadece bu problemi neden aldığımı anladım. Çünkü sql veritabanını oluşturmak ve doldurmak için Data ile kullandığım dosyalar, 1.2mb'den fazla olamaz. Yani onları bölüyorum ve daha fazla sorunum yok. Herkese teşekkürler. Bir tablodaki satır

+3

Sorgunuzu gönderebilir misiniz? Satırların sınırlaması pratik olarak ulaşılamıyor – Dyonisos

+0

Yayını, sorgunun koduyla güncelleştirin. – filoli

+0

Bize logcat bilgilerini verebilir misiniz? – prolink007

cevap

6

en fazla sayısı

bir tablodaki satır teorik en fazla 2^64 (18446744073709551616 veya yaklaşık 1.8e + 19) 'dir. Bu sınıra ulaşılamaz, çünkü en fazla 14 terabaytlık veri tabanına ulaşılacaktır. 14 terabaytlık bir veritabanı, yaklaşık 1e + 13 satırdan daha fazlasını tutamaz ve sonra yalnızca endeks yoksa ve her satırda çok az veri varsa. Buradan

: http://www.sqlite.org/limits.html

+0

Bunu okudum, inan bana. Sadece benim kodumda neden bu hatayı vermeden azami 6000 satır olduğunu anlamıyorum. Yine de teşekkürler – filoli

7

Sen limits of SQLite standart bilgi alabilirsiniz ancak bu sınır aslında çok yüksek olduğu gibi sorununuzu neyin neden olacak değildir. (2'den 64'e!)

Muhtemelen sizin sorununuzun, uygulamanızın kayıtlarını ve/veya eklenen kayıt türlerini nasıl eklediğiyle ilgisi vardır.

Uygulama için bir kod ve ekleme işleminin nasıl işleneceğini kaydeder misiniz? Cevabımı okuduktan sonra gözden geçirebilirim.

eklenen bir ipucu olarak, ayarladığınız emin olun: Bu büyük toplu ekler can gerçekten improve the performance gibi

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

.

+0

Yayını, sorgunun koduyla güncelleştirdim. Teşekkür ederim – filoli

1

böyle sınır yoktur, aşağıya bakınız:

Diyor ki Bir Tablo satırların

Maksimum Sayı

bir tablodaki satır teorik maksimum sayısı 264 (18446744073709551616 veya yaklaşık 1.8e + 19) 'dir. Bu sınıra ulaşılamaz, ulaşılamaz, çünkü en fazla 14 terabaytlık veri tabanına ulaşılacaktır. A 14 terabayt veritabanı, yaklaşık 1e + 13 satırdan daha fazlasını tutamaz ve sonra yalnızca dizin yoksa ve her satır çok az veri içeriyorsa.

0

Maksimum satır sayısı 2^64'dir.

İşte limitation page.

+0

evet, ancak sınır 6000 satır değil. Yani, anlayamadığım şey, uygulamanın neden 6000 satırdan fazla bir tablo oluşturmamasıdır. – filoli

+0

Yorumunuz, sorunuzdan farklı görünüyor. Tabloyu oluştururken veya masaya bakarken problem mi oluyor? Logcat yardımcı olur. – prolink007

+0

Sadece log kediyi yerleştirdim. teşekkürler – filoli

İlgili konular