如何在sqlite中将当前日期设置为数据库表名称?

时间:2018-11-26 00:19:34

标签: android sql sqlite android-studio

我正在尝试创建一个名称为当前日期的表。

这是我尝试使用的表名

 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 :(得分:1)

表名不能以数字开头,您可以替换为:

String tableName = "[26_10_2018]"

答案 1 :(得分:0)

我相信您可以根据以下内容进行操作,即可以解决以下事实:表名(以及列的整体触发器的名称....)除非另有说明,否则不能以数字开头,{{3} }:-

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方法将返回当天的表格。

    -注意正确的格式

免责声明

这个答案绝不是提倡/建议每天创建表的做法。