Как установить текущую дату в качестве имени таблицы базы данных в sqlite? - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь создать таблицу, имя которой является текущей датой.

Вот имя моей таблицы, которое я пытаюсь

 static String date = new SimpleDateFormat("dmmmyy", Locale.getDefault()).format(new Date());


public static String table_name=date;

но он показал эту ошибку

unrecognized token: "26_10_2018" (code 1): , while compiling: INSERT INTO 26_10_2018(quentity_cl,price_cl,item_Cl,spinner_cl) VALUES (?,?,?,?)

Моя цель - установить имя таблицы, используя текущую дату.спасибо.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Я полагаю, что вы можете основывать то, что вы хотите, на следующем, что объясняется тем фактом, что имена таблиц (и имена триггеров имен столбцов в целом) не могут, если они не заключены, начинаться с цифр и других ограничений SQLКак понятно из SQlite - Ключевые слова SQLite : -

public class DBHelperNewtablePerDay extends SQLiteOpenHelper {

    public static final String DBNAME = "mydb";
    public static final int DBVERSION = 1;

    public static final String COL_DAILY_ID = BaseColumns._ID;
    public static final String COl_DAILY_DATA = "_data";
    SQLiteDatabase mDB;
    private String mTodaysTable;

    DBHelperNewtablePerDay(Context context) {
        super(context, DBNAME, null, DBVERSION);
        mDB = this.getWritableDatabase();
        createTodaysTable();
    }


    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }

    private void createTodaysTable() {
        String table_name = "[" + dateTodayinDD_MM_YYFormat() + "]";
        Cursor csr = mDB.query("sqlite_master",null,"name=?",new String[]{table_name},null,null,null);
        if (csr.getCount() < 1) {
            mDB.execSQL("CREATE TABLE IF NOT EXISTS " + table_name + "(" +
                    COL_DAILY_ID + " INTEGER PRIMARY KEY, " +
                    COl_DAILY_DATA + " TEXT " +
                    ")");
        }
        mTodaysTable = table_name;
    }

    private String dateTodayinDD_MM_YYFormat() {
        return  new SimpleDateFormat("dd_MM_yyyy", Locale.getDefault()).format(new Date());
    }

    public String getTodaysTableName() {
        return mTodaysTable;
    }
}
  • Очевидно, что имена столбцов, вероятно, необходимо будет соответствующим образом скорректировать.
  • Обратите внимание на метод getTodaysTableName, который возвращаеттаблица текущего дня.

    - Обратите внимание на исправленный формат

Отказ от ответственности

Этот ответ никоим образом не поддерживает / рекомендует практику создания таблиц на ежедневной основе.

0 голосов
/ 26 ноября 2018

Имена таблиц не могут начинаться с числа , его можно заменить на:

String tableName = "[26_10_2018]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...