Android 我必须使用_ID作为SQlite主键吗?它必须是INT吗?(安卓开发)

Android 我必须使用_ID作为SQlite主键吗?它必须是INT吗?(安卓开发),android,database,sqlite,Android,Database,Sqlite,这可能是个愚蠢的问题,但我还没有找到答案 我希望使用具有自己唯一名称的文本列作为表中的主键。 在我的项目中,定义这一点的代码的一小部分如下所示: ...blahblah..."CREATE TABLE " + CAT_BUD_TAB + " (" + CAT_ITEM_ID + "_ID TEXT PRIMARY KEY, "...blahblah.. 这会如我所愿吗?或者我需要使用“AS ID”?我在中只看到过将_ID作为自动递增整数的单个表。另外,这是另一个表中的外键,但由于我设计了

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

我希望使用具有自己唯一名称的文本列作为表中的主键。 在我的项目中,定义这一点的代码的一小部分如下所示:

...blahblah..."CREATE TABLE " + CAT_BUD_TAB + " (" + CAT_ITEM_ID + "_ID TEXT PRIMARY KEY,    "...blahblah..
这会如我所愿吗?或者我需要使用“AS ID”?我在中只看到过将_ID作为自动递增整数的单个表。另外,这是另一个表中的外键,但由于我设计了我的数据库,我已经阅读了更多的信息,我不确定使用android和SQLITE是否真的有关系

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

如果我有一个create语句,如下所示:

"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(“选择ID,ID作为目录项ID”)


然后我可以互换使用它们吗?我离这里很近吗?哈哈,对不起,我正在努力

您可以将任何想要的内容作为主键

但是,如果您想使用一个游标适配器来自动显示游标查询中的项目,那么您需要一个名为_ID的整数列,因为这里使用的是这个列


但是,如果这不是你计划在桌子上使用的东西,你可以做你想做的

您可以根据自己的意愿创建和定义表,但是如果您必须通过游标适配器使用该表,那么如果不进行调整,它将无法工作

CursorAdapter: The Cursor must include a column named "_id" or this class will not work.
您必须始终发出
选择col1作为_id…
才能工作


因此,建议在表模式中使用
\u id
,如果您想使用其他名称,可以使用此名称
选择_id,_id作为customname…
因此选择两次具有不同名称的_id列。

\u id在sqlite create中必须为int类型(在Java中为long)。不同的阶级都认为这一点。因此,您不能将UUID用作主键。

谢谢您的回复!但恐怕我还是有点慢,如果你能在我最初的帖子中查看我对你的建议的使用情况,我将非常感激!您的代码看起来不错,但字段必须是
\u ID
而不是
ID
谢谢!但我想我需要一个游标适配器,所以我必须有一个整数。好的,干杯。我可以拥有INT _ID但不真正使用它吗,也就是说,我可以说“检索这个文本列所在的整个记录==”Food“对吗?反正也没关系,谢谢你的帮助!