【发布时间】:2020-10-10 09:34:59
【问题描述】:
我制作了这个数据库助手代码,以使表格能够使用以下代码将项目输入到列表中。 list 的表格包括 3 个属性,item_id、item_name 和 item_cost。
//Database Information
private static final String DATABASE_NAME = "budgetlist.db";
private static final int DATABASE_VERSION = 1;
//Table Name
public static final String TABLE_NAME = "List";
//Column Names
public static final String COL_ITEM_ID = "_id";
public static final String COL_ITEM_NAME = "item_name";
public static final String COL_ITEM_COST = "cost";
static final String[] columns = new String[]{DBhelper.COL_ITEM_ID,
DBhelper.COL_ITEM_NAME,DBhelper.COL_ITEM_COST};
// creation SQLite statement
private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_NAME
+ "(" + COL_ITEM_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COL_ITEM_NAME + " TEXT NOT NULL, " + COL_ITEM_COST + " INTEGER )";
但现在我必须在数据库中存储多个列表。因此,我使用相同的代码修改版本制作了另一个数据库代码,以启用包含属性 list_id、list_name、list_duration 和 list_budgetlimit 的列表表,并且我想使用表中创建的每个列表动态创建上述列表,但我是不确定它是如何工作的。 我目前正在使用并需要修改的代码如下:
//List Table Name
public static final String TABLE_LIST_NAME = "ListDetails";
//List Column Names
public static final String COL_LIST_ID = "_id";
public static final String COL_LIST_NAME = "item_name";
public static final String COL_LIST_DURATION = "dur";
public static final String COL_LIST_BLIMIT = "blimit";
static final String[] columns = new String[]{ListDBhelper.COL_LIST_ID,
ListDBhelper.COL_LIST_NAME,ListDBhelper.COL_LIST_DURATION,ListDBhelper.COL_LIST_BLIMIT};
//Database Information
private static final String DATABASE_NAME = "budgetlist.db";
private static final int DATABASE_VERSION = 1;
// creation SQLite statement
private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_LIST_NAME
+ "(" + COL_LIST_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COL_LIST_NAME + " TEXT NOT NULL, " + COL_LIST_DURATION + " TEXT, " + COL_LIST_BLIMIT + " INTEGER )";
public ListDBhelper(Context context1, String databaseName, Context context, int databaseVersion) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
System.out.println("DB Created");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
System.out.println("Table Created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_LIST_NAME);
onCreate(db);
System.out.println("DB Updated");
}
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}
【问题讨论】:
-
你能具体说明这里有什么问题吗?
-
这里的问题是我不知道将同一个数据库中的两个表与第二个动态组合起来。
标签: android sqlite android-studio