2017-03-14 9 views
1

私はいくつかの名前とURLを持つリストビューを持っています..私のアプリケーションが起動した後、私のローカルデータベースにレコードがあるかどうかをチェックします。そこにあるのであれば、最初にだけデータが挿入されていない場合、私の古いレコードはその後、リストビューのデータを表の列を記入し、クリア...これは私がそれをやっている方法です:私のコードのシュガーORMデータベーステーブルレコードを削除する

List<LocalProduct> allAuthors = LocalProduct.listAll(LocalProduct.class); 
if (allAuthors == null) { 
    for (int allList=0;allList<adapter.getCount();allList++){ 
     Product my = adapter.getItem(allList); 
     String offline_name = my.name.toString().trim(); 
     String offline_url = my.image_url.toString().trim(); 
     LocalProduct book = new LocalProduct(offline_name, offline_url); 
     book.save(); 
     } 
    }else { 

     /* 
     SugarContext.terminate(); 
     SchemaGenerator schemaGenerator = new SchemaGenerator(getContext()); 
     schemaGenerator.deleteTables(new SugarDb(getContext()).getDB()); 
     SugarContext.init(getContext()); 
     schemaGenerator.createDatabase(new SugarDb(getContext()).getDB()); 
     */ 

    for (int allList=0;allList<adapter.getCount();allList++){ 
     Product my = adapter.getItem(allList); 
     String offline_name = my.name.toString().trim(); 
     String offline_url = my.image_url.toString().trim(); 
     LocalProduct book = new LocalProduct(offline_name, offline_url); 
     book.save(); 
     } 
    } 

コメントエリアテーブルを削除して再作成すると、毎回遅延が発生します...どうすれば私のレコードを削除できますか?

+0

あなたは別のスレッドでバックグラウンドでそれをしないのはなぜ? –

+0

これは遅延を消滅させるでしょうか?どうやって ? –

+0

いいえ、UIでの作業をブロックしません。 –

答えて

2

LocalProduct.deleteAll(LocalProduct.class); 

自動インクリメントカウンタをリセットする:

LocalProduct.executeQuery("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + tableName + "'"); 
0

なぜテーブルを完全に削除してもう一度再作成するのですか? Suger ormが一括削除をサポートしているので、それをバックグラウンドスレッドで使用します。レコードをリセットするための

チェックhere

関連する問題