Android SQLite创建表不工作

Android SQLite创建表不工作,android,database,sqlite,Android,Database,Sqlite,创建表格不是在创建表格 从这里开始,我取表名 private static String getTableName() { Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta")); SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); String dat

创建表格不是在创建表格

从这里开始,我取表名

private static  String getTableName() {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    String date = df.format(calendar.getTime());
    return date;
}


//table name
private String TABLE_DATE = getTableName();
下面是创建表的代码

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_ENTRY_TABLE = "CREATE TABLE " +TABLE_DATE + "("
            + KEY_ID + " INTEGER PRIMARY KEY," + KEY_ROLL + " TEXT,"
            + KEY_DATE + " TEXT," +  KEY_TIME + " TEXT" + ")";
    db.execSQL(CREATE_ENTRY_TABLE);
}
错误


请查看logcat。

我几乎100%确定20180119是无效的表名,这似乎是错误日志所指的

在返回的表名的开头添加一个下划线,我想您会发现它的工作方式与预期的一样

例:

不需要这样做,但如果出于某种奇怪的原因,这样做不起作用,请尝试在下划线后添加一个字母,如下所示:

private String TABLE_DATE = "_T"+getTableName();

我几乎100%确定20180119是一个无效的表名,这似乎是错误日志所指的

在返回的表名的开头添加一个下划线,我想您会发现它的工作方式与预期的一样

例:

不需要这样做,但如果出于某种奇怪的原因,这样做不起作用,请尝试在下划线后添加一个字母,如下所示:

private String TABLE_DATE = "_T"+getTableName();
尝试使用带有日期的
trim()
函数

在CREATE_ENTRY_表变量中,使用:

String CREATE_ENTRY_TABLE = "CREATE TABLE '" + TABLE_DATE + "' (...);";
请注意表名前后的单引号。

尝试使用带有日期的
trim()
函数

在CREATE_ENTRY_表变量中,使用:

String CREATE_ENTRY_TABLE = "CREATE TABLE '" + TABLE_DATE + "' (...);";

请注意表名前后的单引号。

为什么还要在应用程序中创建它?准备好应用程序后,将DB与应用程序一起部署。为什么还要在应用程序中创建它?准备好应用程序后,使用应用程序部署数据库。可以/可以使用以数字开头的全数字名称或表、列名等。但是,它们必须包含在特殊字符中,以便强制/强制名称成为标识符。有效字符为“”(双引号)严重重音(ASCII代码96)和[]。e、 g::-
创建表如果不存在“2017”(“1234567890abc”整数主键,[1aaaaa]文本)
(注意,严重重音用于显示代码,因此无法显示)。注意!严重的重音不是标准的SQL。我记得不久前读到过关于在[]中包装名称是数字表名称的解决方案,所以这很可能也是一个有效的解决方案。感谢您在@MikeT发表的评论,在最初回答时我没有想到。以数字开头的全数字名称或表格、列名等都是可能的/可用的。但是,它们必须包含在特殊字符中,以便强制/强制名称成为标识符。有效字符为“”(双引号)严重重音(ASCII代码96)和[]。e、 g::-
创建表如果不存在“2017”(“1234567890abc”整数主键,[1aaaaa]文本)
(注意,严重重音用于显示代码,因此无法显示)。注意!严重的重音不是标准的SQL。我记得不久前读到过关于在[]中包装名称是数字表名称的解决方案,所以这很可能也是一个有效的解决方案。谢谢你的评论@MikeT,在最初的回答中我没有想到这一点。