【发布时间】:2016-03-17 12:41:36
【问题描述】:
我希望将我的应用设置为根据用户输入动态创建表格。但我想为表定义一个结构,用户基本上会为表命名。
例如,我希望用户定义他们想要的表的名称,但所有表的行数和行名都相同,他们将通过另一个设置选项填写。
这是我的数据库,我目前有两个表,我需要更改其中 menucategory 表将是用户创建的表,而 menuitem 表将是该类别表的列
公共类 DatabaseHandler 扩展 SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
protected static final String DATABASE_NAME = "Store";
private static final String sqlcat ="menucategory";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE menuitem " +
"( id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, " +
"description TEXT, "+
"price int, "+
"cost int, "+
"cat TEXT)";
db.execSQL(sql);
String sqlcat = "CREATE TABLE menucategory " +
"( id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT)";
db.execSQL(sqlcat);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS menuitem";
db.execSQL(sql);
onCreate(db);
String sqlcat = "DROP TABLE IF EXISTS menucategory";
onCreate(db);
}
/**
* Getting all names
* returns list of mobile name
* */
public List<String> getAllNames(){
List<String> names = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT * FROM " + sqlcat;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
names.add(cursor.getString(1));
} while (cursor.moveToNext());
}
// closing connection
cursor.close();
db.close();
// returning names
return names;
}
}
【问题讨论】:
-
您应该向我们展示您尝试过的内容...同时解释为什么它不起作用或询问您如何使它变得更好。没有代码的问题通常会被否决而不回答
-
所有的表都是通过代码在android中动态创建的(除非你复制DB)......你只需从用户那里读取表名并将其作为参数传递。
-
同意@royB。和 Jenova 你只需要动态创建表吗???
-
我的问题是我不确定从哪里开始@royB,这就是为什么没有代码,我原本想做一些不起作用的事情,所以这是一种新方法。没有代码 = 不知道从哪里开始。感谢 Viswanath Lekshmanan 的洞察力
-
向我们展示创建数据库的代码...这将是一个好的开始...我们将帮助您使其动态...