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,在最初的回答中我没有想到这一点。