2012-01-12 142 views
7

sql lite表的行是否有一些限制? 當該表有超過6000行時,我的應用程序發出錯誤「no such table x ...」。 6000行以下,不要給出任何錯誤。sqlite表中的最大行數?

謝謝。

這是查詢。

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

這是我創建表

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

解決!我只是發現爲什麼我得到這個問題。因爲我使用Data創建和填充sql數據庫的文件不能超過1.2mb。所以,我分裂他們,並沒有更多的問題。謝謝大家。

+3

你能發表您的查詢嗎?行的限制實際無法達到 – Dyonisos 2012-01-12 13:43:36

+0

使用查詢的代碼更新帖子。 – filoli 2012-01-12 14:06:06

+0

你能給我們logcat信息嗎? – prolink007 2012-01-12 17:46:43

回答

6

最大數量表中的行中

表中的行的理論最大數目是2^64(18446744073709551616或約1.8E + 19)。由於最大數據庫容量將達到14 TB,因此無法訪問此限制。一個14兆兆字節的數據庫可以保存不超過大約1e + 13行,然後只有在沒有索引和每行包含非常少的數據時。

從這裏:http://www.sqlite.org/limits.html

+0

我已閱讀,相信我。只是不明白爲什麼在我的代碼中,沒有給出錯誤的最大值是6000行。無論如何感謝 – filoli 2012-01-12 19:54:14

7

你可以在limits of SQLite的標準信息,但不會是什麼導致你的問題,因爲限實際上是非常高的。 (2的64次冪!)

您的問題很可能與您的應用程序如何插入記錄和/或插入的記錄類型有關。

你可以發佈應用程序的一些代碼,以及它如何處理插入?閱讀完畢後我可以修改我的答案。

作爲一個額外的提示,請確保您已設置:

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

,因爲這可能真的是你的大批量插入的improve the performance

+0

我已更新與該查詢的代碼的帖子。謝謝 – filoli 2012-01-12 14:08:10

1

有沒有這樣的限制,見下圖:

它說:

的最大行數在表格中

表中的理論最大行數是264 (18446744073709551616或約1.8e + 19)。由於最大數據庫大小將達到14 TB,因此此限制無法訪問 。 一個14兆兆字節的數據庫可以保存不超過大約1e + 13 行,然後只有在沒有索引時以及每行包含很少的數據。

0

最大行數是2^64。

這裏是limitation page

+0

是的,但限制不是6000行。所以,我不明白爲什麼該應用程序不會創建超過6000行的表。 – filoli 2012-01-12 17:49:37

+0

你的評論似乎不同於你的問題。當您生成表格或查詢表格時,您是否遇到問題? Logcat會有幫助。 – prolink007 2012-01-12 17:51:49

+0

我只是把那裏的日誌貓。謝謝 – filoli 2012-01-12 17:56:37