我有一个注册表,它连接到database.When,我插入记录,最近的记录放在表中的第一位。我希望最近的记录出现在最后输入的记录下面。你能帮帮我吗?
long flag = 0;
int id = 1;
SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor = db.query("tbl_countries", new String[]{"count(*) phone"}, null, null, null, null, null);
while(cursor.moveToNext())
{
int idFromDatabase = cursor.getInt(cursor.getColumnIndex("phone"));
if(idFromDatabase != 0)
{
id = 1 + idFromDatabase;
}
}
ContentValues values = new ContentValues();
//values.put("ID", id);
values.put("phone", Long.parseLong((phone.getText().toString())));
values.put("fname", fnametxt.getText().toString().trim());
values.put("lname", lnametxt.getText().toString().trim());
if(male.isChecked())
{
values.put("gender","male");
}
else
values.put("gender", "Female");
values.put("email", emailtxt.getText().toString());
values.put("mainpin",pin1.getText().toString()+pin2.getText().toString()+pin3.getText().toString()+pin4.getText().toString());
flag = db.insert("tbl_countries", null, values);
if(flag != -1)
{
Toast toast = Toast.makeText(getApplicationContext(), "You have successful inserted this record into database! "+flag, Toast.LENGTH_LONG);
toast.show();
db.close();
return;
}
else
{
Toast toast = Toast.makeText(getApplicationContext(), "An error occured when insert this record into database!", Toast.LENGTH_LONG);
toast.show();
db.close();
return;
}如果我的代码中有任何错误,请给我建议。
发布于 2012-04-13 20:29:46
您可以做的是在您的注册表中指定id (自动递增)列,当您在此时查询您的数据时,通过id列的升序获取它。
发布于 2012-04-13 20:13:49
您的问题不在于记录的插入,而在于检索。
严格地说,数据库中的数据没有顺序。它是未排序的,或者根据您指定的任何条件进行排序。
在本例中,您可能希望对日期字段或ID进行排序,以获得所需的顺序。
发布于 2012-04-13 20:22:05
SQL标准不保证先前插入的记录在检索时的任何特定顺序。这意味着,即使您可能以可预测的顺序查看这些记录,这种顺序也可能在任何时候发生变化,而不会出现任何警告。有问题的DBMS可能决定在某个时候对其存储进行碎片整理,并在进程中对记录进行重新排序-这是完全合法的行为,您必须为此做好准备。获得可靠、一致的记录顺序的唯一方法是使用(令人惊讶!)检索查询中的ORDER BY子句。表中的数据没有定义的排序,只有在检索时才会排序。
如果希望按插入顺序显示数据,请考虑使用自动增量列并按该列排序(升序排列最旧的列,或降序排列最新的列)。
SQL;DR:插入顺序在中没有意义;如果您想要数据排序,请使用 SELECT ... ORDER BY**.**
https://stackoverflow.com/questions/10140552
复制相似问题