2017-07-16 4 views
-2

私はアンドロイドのExpenseMangerアプリを作っています。私はレコードを挿入しましたが、今度はそれらのレコードを日付順に並べて表示します。どうやってするか?どのようにアンドロイドのsqliteテーブルのレコードの作成日を追加し、後ですべてのレコードを日付順に表示するのですか?

ここに私のコードとデータベースがあります。

作成日を列に自動的に挿入し、後でselect *ステートメントで正しく使用する方法を教えてください。ありがとう。

public class Databasehelper extends SQLiteOpenHelper 
{ 
public static final String DATABASE_NAME = "items.db"; 
public static final String TABLE_NAME = "items_table"; 
public static final String COL_1 = "ID"; 
public static final String COL_2 = "TYPE"; 
public static final String COL_3 = "NAME"; 
public static final String COL_4 = "PRICE"; 

public Databasehelper (Context context) 
{ 
    super (context , DATABASE_NAME, null, 1); 

} 

@Override 
public void onCreate(SQLiteDatabase sqLiteDatabase) 
{ 
    sqLiteDatabase.execSQL("create table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, TYPE TEXT, NAME TEXT, PRICE INTEGER);"); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS" + DATABASE_NAME); 
    onCreate(db); 

} 

public boolean insertData(String type, String name, String price) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_2, type); 
    contentValues.put(COL_3, name); 
    contentValues.put(COL_4, price); 

    long result = db.insert(TABLE_NAME, null, contentValues); 
    if (result == -1) 
     return false; 
    else 
     return true; 
} 



public boolean updateData(String id,String type,String name,String price) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_1,id); 
    contentValues.put(COL_2,type); 
    contentValues.put(COL_3,name); 
    contentValues.put(COL_4,price); 

    db.update(TABLE_NAME, contentValues, "ID = ?",new String[] { id }); 
    return true; 
} 

public Integer deleteData (String id) { 

    SQLiteDatabase db = this.getWritableDatabase(); 
    return db.delete(TABLE_NAME, "ID = ?",new String[] {id}); 
} 
public Cursor getListContents(){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); 
    return data; 
} 



} 

答えて

0

ありSQLiteの中の特定のTIMESTAMP型がないので、あなたは、このようなYYYY-MM-DD HHとして、使用して、たとえば、テキストとソート可能な形式で日付を格納するかを選択できます:MM:SS 、または整数として保存し、タイムスタンプ値を手動で格納します。日付と時刻の関数を使用して値を生成し、System.currentTimeMillisを使用してUnixライクなタイムスタンプを作成します。

DateFormat sortable = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date now = Calendar.getInstance().getTime();   
String timestampish = sortable.format(now); 

int timestamp = System.currentTimeMillis; 

使用するには、テーブルにTEXT列またはINTEGER列を追加します。 SQLite Date/Time functionsも参照してください。

これは、最新のものを最初に提供し、DESCを取り出して時間順に取得します。

+0

どうか教えてください。私はアンドロイドに絶対noobです –

+0

文字列のバージョンとintバージョンを作る方法を追加しました。 – Nick

+0

Nick編集ありがとうございます。今私はテーブルのコマンドを作成するタイムスタンプまたはタイムスタンプを追加する必要がありますか?この日までにselect *コマンドで何を書き込むべきですか? –

関連する問題