INSERT到DB时的问题

时间:2016-06-03 13:04:47

标签: java android sqlite android-sqlite

当我尝试将数据提交到数据库时,应用程序崩溃了。

以下是与创建数据库并将数据插入数据库有关的java文件部分。

我的Contract.java课程包含以下信息:

public class Contract {
    public static abstract class customReminder{
        public static final String TABLE_NAME = "CUSTOM_REMINDER";
        public static final String ID = "ID";
        public static final String TITLE = "TITLE";
        public static final String DESCRIPTION = "DESCRIPTION";
        public static final String DATE_TIME = "DATE_TIME";

        public static final String[] REMINDER_COLUMNS = {ID, TITLE, DESCRIPTION, DATE_TIME};

    }

我的DBHelper.java课程:

//SQLite statement for custom reminder table
public static final String CUSTOM_REMINDER_TABLE = "CREATE TABLE " + Contract.customReminder.TABLE_NAME + "("
        + Contract.customReminder.ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
        + Contract.customReminder.TITLE + " TEXT,"
        + Contract.customReminder.DESCRIPTION + " TEXT,"
        + Contract.customReminder.DATE_TIME + " TEXT,"
        + ");";

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CUSTOM_REMINDER_TABLE);
}

我的CustumRemider.java课程:

public boolean createCustomReminder(String title, String description, String dateTime){
    ContentValues contentValues = new ContentValues();
    contentValues.put(mAllColumns[1], title);
    contentValues.put(mAllColumns[2], description);
    contentValues.put(mAllColumns[3], dateTime);
    long result = mDatabase.insert(Contract.customReminder.TABLE_NAME, null, contentValues);
    return result != -1;
}

我从Android设备监视器下载数据库到我的电脑,并用SQLiteBrowser打开它。我注意到创建了一个表android_metadata而不是CUSTOM_REMINDER

CREATE TABLE android_metadata (locale TEXT)

我既不知道查询的来源,也不知道为什么会这样做。

1 个答案:

答案 0 :(得分:0)

你需要改变 在create table query

中的最后一个参数之后删除逗号(",")
public static final String CUSTOM_REMINDER_TABLE = "CREATE TABLE " + Contract.customReminder.TABLE_NAME + "("
    + Contract.customReminder.ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
    + Contract.customReminder.TITLE + " TEXT,"
    + Contract.customReminder.DESCRIPTION + " TEXT,"
    + Contract.customReminder.DATE_TIME + " TEXT"
    + ");";

而不是

public static final String CUSTOM_REMINDER_TABLE = "CREATE TABLE " + Contract.customReminder.TABLE_NAME + "("
    + Contract.customReminder.ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
    + Contract.customReminder.TITLE + " TEXT,"
    + Contract.customReminder.DESCRIPTION + " TEXT,"
    + Contract.customReminder.DATE_TIME + " TEXT,"
    + ");";