这可能是一个愚蠢的问题,但我还没有找到答案。
我想使用带有自己唯一名称的TEXT列作为表中的主键。 在我的项目中,用于定义此代码的一小部分代码如下所示:
...blahblah..."CREATE TABLE " + CAT_BUD_TAB + " (" + CAT_ITEM_ID + "_ID TEXT PRIMARY KEY, "...blahblah..
这会按照我的意愿行事吗?或许我需要使用“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);"
然后有: db.execSQL(“SELECT ID,ID AS CAT_ITEM_ID”)
然后我可以互换使用它们吗?我甚至近在咫尺吗?哈哈,对不起,我正在努力!
答案 0 :(得分:12)
您可以根据需要创建和定义表格,但是如果您必须通过CursorAdapter使用该表,如果没有调整则无法使用。
CursorAdapter: The Cursor must include a column named "_id" or this class will not work.
您必须始终发出select col1 as _id ...
才能正常工作。
所以建议在表模式中使用_id
,如果你想使用其他名称,你可以这样做。 select _id, _id as customname ...
因此请使用不同的名称选择_id列两次。
答案 1 :(得分:3)
您可以将任何想要的内容作为主键。
但是如果您想要使用CursorAdapter自动显示Cursor-query中的项目,则需要有一个名为_ID的整数列,因为这里使用了这个。
但如果这不是你计划用于桌子的东西,你可以做你想做的事!
答案 2 :(得分:0)
_id必须是sqlite create中的int类型(Java中的long)。各种类都假设。因此,您不能将UUID用作主键。