insert id始终返回-1,并且数据未插入数据库中。请有人帮助我

时间:2015-09-21 11:35:03

标签: android sqlite

当我插入数据然后插入id总是返回-1这是我的数据库table.my数据库是成功创建的。那么,请告诉我如何解决这个问题。

query3 = "CREATE TABLE IF NOT EXISTS `" + StaticData.SUBJECT_TABLE_NAME + "` ("
                + "`subject_id` int(11) NOT NULL,"
                + "`subject_name` varchar(100) DEFAULT NULL,"
                + " PRIMARY KEY (`subject_id`)"
                + ");";

public long insertSubject(TeacherModel queryValues) {
            long insertId = -1;
            ContentValues values = new ContentValues();

            values.put("id", queryValues.getSubject_id());
            values.put("name", queryValues.getSubject());

            if(database != null) {

                 insertId = database.insert(StaticData.SUBJECT_TABLE_NAME, null,
                        values);
            }
            Log.w(DataInteract.class.getName(),
                    "Subject::" + values + "insertID=" + insertId);

            return insertId;
        }

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题,请查看以下更正

据我所知,insertID应始终等于您尝试插入的subject_id,如果此假设不正确,则需要在表中添加不同的列。

你做错的事情:表格创建错误,你使用MySQL代码而不是SQLite,它可能在某些情况下有用,但不建议。 您的valuesContentValues())中的列名错误,如果您的数据库不存在,您仍然会得到-1。

query3 = "CREATE TABLE IF NOT EXISTS `" + StaticData.SUBJECT_TABLE_NAME + "` ("
                + "`subject_id` INTEGER PRIMARY KEY,"
                + "`subject_name` TEXT"
                + ");";

public long insertSubject(TeacherModel queryValues) {
    long insertId = -1;
    ContentValues values = new ContentValues();

    values.put("subject_id", queryValues.getSubject_id());
    values.put("subject_name", queryValues.getSubject());
    if(database != null) {
        insertId = database.insert(StaticData.SUBJECT_TABLE_NAME, null,
                        values);
    }
    Log.w(DataInteract.class.getName(),
          "Subject::" + values + "insertID=" + insertId);

    return insertId;
}