是否可以从用户输入创建数据库表名。我看到的所有教程都在应用程序实际运行之前预先创建了表名。理想情况下,我想将一个String传递给onCreate方法(首先调用它来创建数据库表)并使用该字符串作为表名。这可能吗?
答案 0 :(得分:1)
我不使用它来创建第一个表,但这是我用来创建新表的方法。第一个表大多是空的,我从列表视图列表中删除它。 loc
是我传入的字符串。我正在将它切换到ContentProvider但是
public long addTable(String loc) {
// TODO Auto-generated method stub
ourDatabase.execSQL("CREATE TABLE IF NOT EXISTS " + loc + " ("
+ KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_2TBL
+ " TEXT NOT NULL, " + KEY_ONE + " TEXT NOT NULL, "
+ KEY_TWO + " TEXT NOT NULL);");
ContentValues cv = new ContentValues();
cv.put(KEY_2TBL, loc);
return ourDatabase.insert(loc, null, cv);
}
答案 1 :(得分:0)
当您创建Object of DatbaseClass时,将创建数据库。
您可以在获得字符串名称时创建对象。
然后你可以把它传递给Bill Gary在他的答案中完成的功能。
答案 2 :(得分:0)
您将无法使用onCreate()
方法创建第二个表。因为只有在创建数据库时才会调用它。您将无法插入任何String As Argument。您可以创建一个新方法来执行此操作。
方法可能看起来像这样,
public void AddDesiredTable(String TableNmae){
/*At first you will need a Database object.Lets create it.*/
SQLiteDatabase ourDatabase=this.getWritableDatabase();
/*then call 'execSQL()' on it. Don't forget about using TableName Variable as tablename.*/
ourDatabase.execSQL("CREATE TABLE IF NOT EXISTS " + TableNmae+ " ("
+ KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_2TBL
+ " TEXT NOT NULL, " + KEY_ONE + " TEXT NOT NULL, "
+ KEY_TWO + " TEXT NOT NULL);")
}