我正在接收存储在SD卡中的全部BLE数据。此数据组织在多个文本文件中,每个文件对应一个日期。 在Android上接收此数据时,我想将其保存在SQlite数据库中。 考虑使用相同的逻辑,每天创建一个表。我的问题是,是否有可能根据将要转移的天数自动创建表。经过一些研究,我发现了如何使用onUpgrade方法添加新表并更改数据库版本,但这似乎只能通过手动更改数据库版本来实现。 另一种选择是为所有数据创建一个表,然后将日期添加为列。
任何反馈都是有价值的!
答案 0 :(得分:1)
通常,您将使用一个以日期为列的表。
如果在 onUpgrade 方法之外不存在表,则可以动态创建表。对于每个日期/文件,可以在接收文件时以及在加载/插入数据之前::-
使用CREATE TABLE IF NOT EXISTS the_table_with_a_name_that_relates_to_the_date (the_column_definitions)
使用类似方法(以下假定此方法在DatabaseHelper中)
:-
public bolean checkAndAddTable(String tableName) {
boolean rv = false;
SQLiteDatabase = this.getWriteableDatabase();
Cursor csr = db.query("sqlite_master",null,"name=? AND type='table'",new String[]{tableName},null,null,null);
if (csr.getCount() < 1) {
db.execSQL("CREATE TABLE IF NOT EXISTS " + tableName + "(......SQL TO CREATE THE COLUMN DEFINITIONS......)");
rv = true;
}
csr.close();
return rv;
}
但是,从多个表中提取数据将/将需要检查表是否存在,以查看是否可以提取数据,这会引起额外的处理/复杂性(例如,如果不存在该怎么办)。 / p>