在 SQLiteOpenHelper 的 onCreate() 中建表:
String TABLE_LOCATIONLABLES = "CREATE TABLE " + TABLE_LOCATIONLABLES + "("
+ KEY_LOCID + " INTEGER PRIMARY KEY,"
+ KEY_LOCNAME + " TEXT," + ")";
db.execSQL(TABLE_LOCATIONLABLES);
編譯器報錯:區域變數 TABLE_LOCATIONLABLES 可能未初始化。
類別已定義 static final String TABLE_LOCATIONLABLES = "locationLables"; 作為表名常數。但在方法內部:
String TABLE_LOCATIONLABLES = "CREATE TABLE " + TABLE_LOCATIONLABLES + "("
這行宣告了同名區域變數,導致:
TABLE_LOCATIONLABLES 指向的是正在宣告的區域變數(尚未賦值)this.TABLE_LOCATIONLABLES// 使用不同變數名,或直接拼接
String createTableSql = "CREATE TABLE " + TABLE_LOCATIONLABLES + "("
+ KEY_LOCID + " INTEGER PRIMARY KEY,"
+ KEY_LOCNAME + " TEXT" // 移除多餘逗號
+ ")";
db.execSQL(createTableSql);
TEXT, 會報語法錯)`locationLables` 避免關鍵字衝突AUTOINCREMENT:INTEGER PRIMARY KEY AUTOINCREMENTTABLE_NAME_LOCATION_LABELS,SQL 變數用 sqlCreateTable,語義區分明確private static final String SQL_CREATE_LOCATION_LABELS =
"CREATE TABLE " + TABLE_LOCATION_LABELS + " (" +
KEY_LOC_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_LOC_NAME + " TEXT NOT NULL" +
")";