1
我正在開發實現,可以在其中輸入一個詞,而鍵入應用程序將過濾正在屏幕上顯示內容的EditField中的應用程序。黑莓線掛在SQLite的聲明準備
爲此,我在用戶鍵入時開始一個新線程。該線程從SQLite表中提取信息,然後在UI上顯示。
我在應用程序中使用SQLite來處理其他事情,並且每條語句都很好。
的問題是,當我使用Statement.prepare()方法中篩選線程,它掛起!
爲了簡便,讓假設用戶只輸入在EditField中1個字母。
代碼的想法是這樣的:
我啓動線程的用戶輸入一個字母后:
mThread = new Thread(){
public void run(){filtrarListaRecolecciones();}
};
mThread.setPriority(Thread.MAX_PRIORITY);
mThread.start();
而在filtrarListaRecolecciones我運行:
mStatement = mBD.createStatement("SELECT COUNT(*) FROM Recolecciones WHERE Nombre LIKE '%a%' AND Status=3");
mStatement.prepare();
而且該線程在準備語句中掛起。
它用來獲得約1分鐘後的結果,但現在它只是掛起。
表只有1條記錄,所以它不應該是因爲這一點。
任何幫助將不勝感激!
謝謝!
+1感謝,正是答案我需要 – 2011-02-22 00:23:56
所以,你應該從一個單獨的線程中執行數據庫的任何操作。那麼線程安全在哪裏?我可以從另一個線程的另一個數據庫? – 2011-09-12 01:59:05
嗨安德烈。這是正確的,根據我的理解,他們使用術語「線程安全」來指定只要每個連接到不同的DB文件,就可以在不同線程中擁有儘可能多的SQLite連接。我相信術語「線程安全」在Blackberry文檔中沒有被正確使用。從線程安全的我明白,我可以在不同的線程中使用相同的連接實例,但這不是這種情況。 – Arturo 2011-09-22 14:59:24