自动增量无法处理ID

时间:2016-04-21 16:51:19

标签: java android sqlite

在我的Android应用程序中使用自动增量功能在SQL中运行时遇到了一些麻烦。

public static final String TABLE_NAME = "collections";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_TITLE = "title";
public static final String CREATE_STATEMENT = "CREATE TABLE " + TABLE_NAME +
        "(" +
        COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
        COLUMN_TITLE + " TEXT NOT NULL" + ")";

create语句是否存在可能导致此问题的主要问题?

2 个答案:

答案 0 :(得分:1)

不需要将AUTOINCREMENT NOT NULL添加到主键,因为主键(列)应该是自动递增的,并且它不能为空。 以下是SQL查询的示例,您可以编辑该查询以创建自己的表。

 public static final String CREATE_TABLE = "CREATE TABLE IF NOT  EXISTS " + "Your_Table_Name" +
            " (" + BaseColumns._ID + " INTEGER PRIMARY KEY," +
            "first_column_name" + " TEXT" + "," +
            "second_column_name" + " TEXT" + ")";

BaseColumns位于package android.provider中由android提供的界面中,您可以使用该界面创建名为"_id"

的主列

答案 1 :(得分:0)

当您插入新值时,不要定义id(它将自动生成),只需使用COLUMN_TITLE。

即使在方案中你也可以跳过id定义,因为sqlite在内部使用RAWID,后者将你的ID别名为RAWID。