CREATE TABLE未创建表格
从这里我拿表名
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);
}
错误
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jagdishchoudhary.iitgandhinagarmesssystem/com.jagdishchoudhary.iitgandhinagarmesssystem.MainActivity}: android.database.sqlite.SQLiteException: near "20180119": syntax error (code 1): , while compiling: CREATE TABLE 20180119(id INTEGER PRIMARY KEY,Roll TEXT,Date TEXT,Time TEXT)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Caused by: android.database.sqlite.SQLiteException: near "20180119": syntax error (code 1): , while compiling: CREATE TABLE 20180119(id INTEGER PRIMARY KEY,Roll TEXT,Date TEXT,Time TEXT)
请参阅logcat。
答案 0 :(得分:3)
我非常接近100%确定20180119是一个无效的表名,这似乎是错误日志所指的内容。
在您返回的表名称的开头添加下划线,我认为您会发现它的工作方式与您预期的一样。
例如:
private String TABLE_DATE = "_"+getTableName();
这不应该是必要的,但如果由于某些奇怪的原因而无法正常工作,请尝试在下划线上添加一个字母:
private String TABLE_DATE = "_T"+getTableName();
答案 1 :(得分:0)
尝试将trim()
函数与日期一起使用。
在CREATE_ENTRY_TABLE变量中使用:
String CREATE_ENTRY_TABLE = "CREATE TABLE '" + TABLE_DATE + "' (...);";
注意表名前后的单个引号。