有没有办法通过索引/位置在表中获取某一行,而不是通过其ID?如何通过索引获取SQLite中的行(不是通过id)
比如我有3行与标识:
Record1
Record2
Record3
现在,如果我使用它的ID删除第二行,剩余的行会是这样:
Record1
Record3
因为我使用ListView
的位置来确定要删除数据库中的哪一行,下一次我尝试删除第二行时,我将得到异常,因为具有id 2的行不存在。
那么有没有一种方法可以通过表中的索引检索行?
有没有办法通过索引/位置在表中获取某一行,而不是通过其ID?如何通过索引获取SQLite中的行(不是通过id)
比如我有3行与标识:
Record1
Record2
Record3
现在,如果我使用它的ID删除第二行,剩余的行会是这样:
Record1
Record3
因为我使用ListView
的位置来确定要删除数据库中的哪一行,下一次我尝试删除第二行时,我将得到异常,因为具有id 2的行不存在。
那么有没有一种方法可以通过表中的索引检索行?
更好的方法是从ListView
项目代表的对象中获取记录的ID,然后使用它来获取数据库中的正确记录。在您的ListView
的OnItemClickListener
中,onItemClick
事件将AdapterView
作为第一个参数,将所选项目的索引作为第二个参数。从适配器获取该项目并将其转换为它所代表的类型。
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
YourClass c = (YourClass)arg0.getItemAtPosition(arg2);
//index of the record to delete can now be accessed at c.id
}
但是,如果你真的想要得到第n个纪录,我相信你可以做到以下几点:
SELECT * FROM TableName LIMIT 1 OFFSET n;
其中n是你以后的指数。这也假定您的结果按照与您的ListView
相同的方式排序。
就像我知道的那样,没有。顺便说一下,“索引”究竟是什么?数据库应该以什么顺序显示列表中的数据? – Dan 2013-02-08 22:46:11
什么是替代呢? – pedja 2013-02-08 22:47:30
使用ID列。 – Dan 2013-02-08 22:48:08