Java 插入数据库时出现的问题

Java 插入数据库时出现的问题,java,android,sqlite,android-sqlite,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

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

下面是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};

    }
My
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);
}
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;
}
我的
custumerimer.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);
}
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 Device Monitor将数据库下载到我的电脑上,并用SQLiteBrowser打开它。我注意到创建了一个表
android\u元数据
,而不是
CUSTOM\u提醒

CREATE TABLE android_metadata (locale TEXT)
我既不知道查询来自何处,也不知道它为什么这样做。

您需要更改 删除create 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"
    + ");";
而不是这个

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,"
    + ");";

请发布LogCat错误
android\u元数据
表由android生成&它存储android需要的元数据。还有什么不对劲吗?您得到的崩溃的堆栈跟踪会有帮助您是否在任何地方创建了SqliteOpenHelper的实例?在尝试打开数据库连接之前,不会创建表