2017-04-07 55 views
0

我正在尝试在Android SQLite中查询我的表。当我查询我的表时,我希望ID号从1开始,并为每行增加。但是,当我在我的桌子上查询时,它显示了原始表格的ID号码。 任何建议将不胜感激。如何在Android SQL查询中将ID编号设置为1

 private static String[] FROM = {_ID, TITLE, DATE, TIME, DETAILS}; 
private static String ORDER_BY = TIME + " ASC"; 

private Cursor getAppointments() { 
    SQLiteDatabase db = appointments.getReadableDatabase(); 
    Cursor cursor = db.query(TABLE_NAME, FROM, DATE + "=?", new String[] {date}, null, null, ORDER_BY, null); 
    startManagingCursor(cursor); 
    return cursor; 
} 

} 
+0

问题是关于sqlite那么为什么你要标记“mysql”? – denny

+0

我不好意思:) –

回答

0

通常情况下,你应该不是真的关心ID,比它的独特其他的价值,从而确定该行。

如果你定义一个列的表_idPRIMARY KEY那么除非你设置_id,它通常会从1开始,当你插入的第一行,接下来通常是2,然后3等

如果你的代码AUTOINCREMENT虽然,这可能并非如此,因为AUTOINCREMENT将使独特价值在数据库级别。

下面是关于从SQLite Autoincrement

AUTOINCREMENT关键字强加额外的CPU,内存,磁盘空间萃取物以及 磁盘I/O开销,应该如果不严格需要避免。通常不需要 。

In SQLite, a column with type INTEGER PRIMARY KEY is an alias for the ROWID (except in WITHOUT ROWID tables) which is always a 64-bit 

有符号的整数。

On an INSERT, if the ROWID or INTEGER PRIMARY KEY column is not explicitly given a value, then it will be filled automatically with an 

未使用的整数,通常是一个比 使用目前最大的ROWID更多。无论是否使用AUTOINCREMENT 关键字,情况都是如此。

If the AUTOINCREMENT keyword appears after INTEGER PRIMARY KEY, that changes the automatic ROWID assignment algorithm to prevent the 

在数据库的整个生命周期中重复使用ROWID。换句话说,AUTOINCREMENT的目的是防止从以前删除的行重新使用 中的ROWID。

我假设你没有这样的_id会动态变化,要查询后所提取的行的顺序,这是一个问题是如何被解释为每一个期望

当我查询我的表我想要的ID号为1个 增量开始的每一行

如果这是你的问题,那么你通常不会通过游标做到这一点,而你循环,它将根据查询进行排序。如果你真的希望第一个被1,2,3所引用,那么你可以循环使用这个数字创建一个关联的数组。

+0

我得到你来自哪里,因为把id作为主键,并且它自动增加对我的程序非常重要。不过谢谢你的帮助,我会尝试通过游标数组的想法做循环。谢谢。 –

+0

不幸的是我似乎无法获得游标数组的工作。不过谢谢你的帮忙。 –