以先入先出(FIFO)顺序从sqlite数据库中取出

Vin*_*inC 1 database sqlite android querying

你好Stackoverflowers!

我这样创建了一个简单的sqlite DB.

//event table name
private static final String TABLE_EVENTS = "events";

//event table columns names
private static final String KEY_ID = "id";
private static final String KEY_EVENT = "event";

@Override
public void onCreate(SQLiteDatabase db) 
{
//String to define our database
String CREATE_EVENT_TABLE = "CREATE TABLE " + TABLE_EVENTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_EVENT + " TEXT" + ")";

//create our database
db.execSQL(CREATE_EVENT_TABLE);
}
Run Code Online (Sandbox Code Playgroud)

我理解为具有id列和事件列的表.

在事件列中我存储了一个转换为字符串的JSONObject,我希望以FIFO(先进先出)顺序从表中检索,这样如果我的应用程序崩溃,我可以发送我下次存储的JSONObjects应用程序已打开.

我可以使用以下方法插入到表中而没有问题:

public void addEvent(JSONObject event)
{
    //get our database so we can add to it
    SQLiteDatabase db = this.getWritableDatabase();

    //define content values to store our values
    ContentValues values = new ContentValues();

    //add our event to the ContentValues
    values.put(KEY_EVENT, event.toString());

    //insert a row
    db.insert(TABLE_EVENTS, null, values);

    //close the database connection
    db.close();
}
Run Code Online (Sandbox Code Playgroud)

我无法查询特定的行或事件并从数据库中获取事件以及跟踪事件插入顺序的好方法,以便我可以按FIFO顺序将它们拉出来.

示例代码特别有用,因为我在尝试查询时遇到语法错误,并且对SQLite不太熟悉.

任何帮助深表感谢!感谢您的时间.

Rag*_*hav 7

你好VinC最好的方法是自动增加id,这是你的主键,所以你可以做到,

String CREATE_EVENT_TABLE = "CREATE TABLE " + TABLE_EVENTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_EVENT + " TEXT" + ")";
Run Code Online (Sandbox Code Playgroud)

现在,您可以按升序查询orderby Id的数据库

database.query("TABLE_EVENTS", new String[]{"KEY_EVENT"},null,null, null, null,"KEY_ID ASC");
Run Code Online (Sandbox Code Playgroud)