2012-03-20 16 views
0

アンドロイドのSQLiteに問題があります。今、私は、サーバーからJSONオブジェクトを引っ張って、それを解析し、このコードを使用して、などの名前、ROW_ID、ユニークID、などのことで、表中の各サブオブジェクトを入れている:AndroidのSQLiteの繰り返し要素

public void fillTable(Object[] detailedList){ 
    for(int i=0;i<detailedList.length;++i){ 
     Log.w("MyApp", "Creating Entry: " + Integer.toString(i)); 
     String[] article = (String[]) detailedList[i]; 
     createEntry(article[0], article[1], article[2], article[3], article[4], article[5]); 
    } 
} 

createEntryは、それが聞こえるようにします。これは6文字列をとり、cv.putを使用してエントリを作成します。問題はありません。

私は経由して、しかし、それらを注文しよう:各エントリは、実際に多くの重複があり

public String[] getAllTitles(int m){ 
    Log.w("MyApp", "getTitle1"); 
    String[] columns = new String[]{KEY_ROWID, KEY_URLID, KEY_URL, KEY_TITLE, KEY_TIME, KEY_TAGS, KEY_STATE}; 
    Log.w("MyApp", "getTitle2"); 
    Cursor c = ourDatabase.query(DATABASE_TABLENAME, columns, null, null, null, null, KEY_TIME); 
    Log.w("MyApp", "getTitle3"); 

    String title[] = new String[m]; 
    Log.w("MyApp", "getTitle4"); 

    int i = 0; 
    int rowTitle = c.getColumnIndex(KEY_TITLE); 
    Log.w("MyApp", "getTitle5"); 

    for(c.moveToFirst();i<m;c.moveToNext()){ 
     title[i++] = c.getString(rowTitle); 
     Log.w("MyApp", "getTitle " + Integer.toString(i)); 
    } 

    return title; 
} 

。私は同期した時間と同じくらい多くの重複を想定しています。 onUpgradeメソッドを手動で呼び出す方法はありますか?テーブルを削除して新しいテーブルを作成する方法、または重複を削除するより良い方法はありますか?

副次的な質問は、逆順で注文する方法はありますか?私は今すぐ注文しています、そして最も古い追加されたエントリーが最初です(最小番号)。それとは逆のことはありますか?

答えて

4

1つの列に重複しないようにするには、UNIQUEキーワードを使用してその列を作成します。データベースは重複を挿入しないことを確認し、その場合に何が起きるかを指定することさえできます。

CREATE TABLE mytable (
    _id INTEGER PRIMARY KEY AUTOINCREMENT, 
    theone TEXT UNIQUE ON CONFLICT REPLACE 
) 

あなたはすでにそれがすでにそのアイテムを持っているし、新しい行を挿入した行を削除しますが存在し、そのテーブルに何かを挿入した場合:私は、これはあなたのために良いだろうと思います。つまり、置換された行は新しい_idになります(_idは自動的に拡大するように設定されているため、自分でそのIDを挿入してはいけません)、

2番目の質問: ASC(昇順)またはDESC(降順)を追加した場合。あなたはおそらくDESCが欲しいです。

Cursor c = ourDatabase.query(DATABASE_TABLENAME, columns, null, null, null, null, KEY_TIME + " DESC"); 
+0

ありがとうございました。私は前に "desc"タグを見ていましたが、他のSQLクラスを実装している人が私のものでした。ありがとう! –

関連する問題