SQLite - 自动增量无法按预期工作?

时间:2017-04-22 17:34:39

标签: java android sqlite

我想创建一个名为tasksTable的表,它有两列 - taskName及其自动增量taskID

这是我用它创建数据库并实现操作上述表的操作的类 -

public class DatabaseOperations extends SQLiteOpenHelper {


    public static final int database_version = 1;
    ***public String CREATE_QUERY = "CREATE TABLE tasksTable(taskName TEXT, taskID INTEGER primary key AUTO_INCREMENT NOT NULL);"

    public DatabaseOperations(Context context) {
        super(context, TableData.TableInfo.DATABASE_NAME, null, database_version);
        Log.d("Database operations", "Database created successfully");
    }

    @Override
    public void onCreate(SQLiteDatabase sdb) {
        sdb.execSQL(CREATE_QUERY);
        Log.d("Database operations", "Table created successfully");
    }


    public void putInformation(DatabaseOperations dop, String taskName){

        SQLiteDatabase SQ = dop.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(TableData.TableInfo.TASK_NAME, taskName);

        SQ.insert(TableData.TableInfo.TABLE_NAME, null, cv);
        Log.d("Database operations", "One row inserted");
    }

    public Cursor getInformation(DatabaseOperations dop) {
        SQLiteDatabase SQ = dop.getReadableDatabase();
        String[] columns = {TableData.TableInfo.TASK_NAME, TableData.TableInfo.TASK_ID};

        return SQ.query(TableData.TableInfo.TABLE_NAME, columns, null, null, null, null, null);
    }
}

但问题是,只要我打开应用程序,我就会收到以下错误 -

  

java.lang.RuntimeException:无法启动活动ComponentInfo {com.android.hw_3 / com.android.hw_3.MainActivity}:android.database.sqlite.SQLiteException:no such column:taskID(code 1):, while编译:SELECT taskName,taskID FROM tasksTable

也许它必须是我实施putInformation的方式?鉴于存在这个“隐含”列taskID,我不确定这是否会添加新错误。

3 个答案:

答案 0 :(得分:0)

将此查询用于create table: -

public String CREATE_QUERY = "CREATE TABLE tasksTable(taskName TEXT, taskID int NOT NULL AUTO_INCREMENT, UNIQUE KEY `taskID` (`taskID`));"

答案 1 :(得分:0)

您应该将类​​型从INT重命名为INTEGER

以下是Sqlite

中支持的类型

将您的代码更改为:

 public String CREATE_QUERY = "CREATE TABLE tasksTable(taskName TEXT, taskID INTEGER primary key AUTOINCREMENT NOT NULL);"

答案 2 :(得分:0)

  

android.database.sqlite.SQLiteException:没有这样的列:taskID(代码   1):,在编译时:SELECT taskNametaskID FROM tasksTable

tasksTable未正确创建。

更新CREATE_QUERY,如下所示:

public String CREATE_QUERY =  "CREATE TABLE tasksTable(taskName TEXT, taskID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL);"

希望这会起作用〜