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

标签 android database sqlite

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

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

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

这会像我预期的那样工作吗?或者我可能需要使用“AS ID”?我只看到带有 _ID 的单个表作为自动递增整数。此外,这本来是另一个表中的外键,但自从我设计了我的数据库后,我已经阅读了更多信息,但我不确定使用它是否真的很重要安卓和 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")

然后我可以互换使用它们吗?我什至离得很近吗?哈哈,对不起,我正在尝试!

最佳答案

您可以根据需要创建和定义表,但如果您必须通过 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 列两次。

关于android - 我必须使用 _ID 作为 SQlite 主键吗?它必须是 INT 吗? (安卓开发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4313987/

相关文章:

c# - SQLite 的 .NET Framework 数据提供程序发生意外错误

android - 处理后台通知

android - 如何为apk文件添加时间戳?

php - Laravel null 对象 hasMany 关系

mysql - siremis 的数据库配置错误 : SQLSTATE[HY000] [1045] Access denied for user 'siremis' @'localhost' (using password: YES)

python - 如何在 Django 中过滤具有多对多关系的对象

Android:创建 ListView ,日期作为页眉,总数作为页脚

java - 在java中使用接口(interface)的原因是什么?

android - 如何在 ExpandableListView 的组项中放置一个按钮?

sql - 创建一个 SQLite View ,其中一行取决于前一行