我是否必须使用_ID作为SQlite主键? 而且它必须是一个INT? (Android Dev)

这可能是一个愚蠢的问题,但我还没有能够find答案。

我想用我自己的唯一名称作为表中的主键的TEXT列。 在我的项目中定义这个的一小段代码看起来像这样:

...blahblah..."CREATE TABLE " + CAT_BUD_TAB + " (" + CAT_ITEM_ID + "_ID TEXT PRIMARY KEY, "...blahblah.. 

这个工作,我打算? 或者也许我需要使用“AS ID”? 我只看到_ID作为一个自动增量整数英寸的单个表。此外,这是打算在另一个表中的外键,但因为我devise了我的数据库我已经阅读更多的信息,我不知道这真的很重要android&SQLITE?

感谢下面的海报,但我有点慢,不知道如果我正确应用信息,你可以检查?

所以,如果我有这样的创build语句:

 "CREATE TABLE " + CAT_BUD_TAB + " (" + CAT_ITEM_ID + " TEXT PRIMARY KEY, " + IN_OUT + " TEXT, " + BUDGET_AMOUNT + " REAL, " + ACTUAL_AMOUNT_SPENT + " REAL, " + AMOUNT_STRAYED + " REAL, " + OVERBUDGET_TF + " INTEGER, " + AUTOSPEND_TF + " INTEGER);" 

然后有:db.execSQL(“SELECT ID,ID AS CAT_ITEM_ID”)

我可以交替使用它们吗? 我什至在任何地方接近? 哈哈抱歉,我正在尝试!

您可以根据需要创build和定义表格,但是如果您必须通过CursorAdapter来使用该表格,则无需调整即可使用该表格。

 CursorAdapter: The Cursor must include a column named "_id" or this class will not work. 

您必须始终发出select col1 as _id ...来工作。

所以build议在表模式中使用_id ,如果你喜欢用其他名字,你可以这样做。 select _id, _id as customname ...所以select不同名称的_id列两次。

你可以有任何你想要的主键。

但是,如果你想要使用一个CursorAdapter自动显示来自Cursor-query的项目,你需要一个名为_ID的整数列,因为这里使用了这个列。

但是,如果这不是你打算使用的桌子,你可以做你想要的东西!

在sqlite中,_id的types必须是int(在Java中是long)。 各种类别都假设 因此,您不能使用主键的UUID。