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

Hol*_*lly 8 database sqlite android

这可能是一个愚蠢的问题,但我还没有找到答案.

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

...blahblah..."CREATE TABLE " + CAT_BUD_TAB + " (" + CAT_ITEM_ID + "_ID TEXT PRIMARY KEY,    "...blahblah..
Run Code Online (Sandbox Code Playgroud)

这会像我打算的那样工作吗?或许我需要使用"AS ID"?我只看到单个表的_ID作为自动递增整数.此外,这是另一个表中的外键,但由于我设计了我的数据库,我已经阅读了更多信息,我不确定这真的很重要android和SQLITE?

感谢下面的海报,但我有点慢,不知道我是否正确应用信息,你能查一下吗?

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

"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);"
Run Code Online (Sandbox Code Playgroud)

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

我可以互换使用它们吗?我甚至近在咫尺吗?哈哈,对不起,我正在努力!

Pen*_*m10 12

您可以根据需要创建和定义表,但是如果您必须通过CursorAdapter使用该表,如果没有调整则无法使用.

CursorAdapter: The Cursor must include a column named "_id" or this class will not work.
Run Code Online (Sandbox Code Playgroud)

你必须总是发一个select col1 as _id ...工作.

所以建议_id在表模式中使用,如果你想使用其他名称,你可以这样做.select _id, _id as customname ...所以选择_id列两次使用不同的名称.