1

我有一个测验应用程序,它用大约 20 个不同类别的问题填充了一个 sqlite 数据库。我想在应用计费中实现,例如,如果有人购买 Category1,那么这些问题将被添加到数据库中,而不是其他问题。我的一些问题属于两类,所以让我们说 Category1 和 Category2。

try {
            for (int n = 1; n < sqlString.length; n++) {

                db.execSQL("INSERT INTO " + DATABASE_TABLE + " VALUES ("
                        + sqlString[n] + ");");

            }
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }

这是我当前在 SQLite 类的 onCreate 方法中设置的。sqlString 是一个字符串数组,包含我到目前为止的所有 500 个问题。

我将存储一个类别是否已在另一个表中购买(但我愿意接受有关如何执行此操作的其他建议)。我计划创建一个类,该类读取该数据库,设置布尔值 true 或 false,无论是否已购买每个类别。所以

boolean cat1 = CheckIfCategoryHasBeenBought(category1)

等等,如果它已经被买了,我会实现一个方法,比如

boolean[] catChecker = {cat1, cat2, cat3, etc....}
SQLite info = new SQLite(this);
info.open();
info.addQs(catChecker)
//this will pass the true and false boolean values for each method then 
//based on that I choose to implement or not
info.close();

但是我不知道这是否是一个好方法。我不确定如何检查该值是否已添加(因为它与已购买的另一个类别交叉)。我在想一个光标最好检查是否已经添加了值但是我如何让光标进行搜索?

我认为可以实现的方法是

1)我只使用与购买的问题相关的字符串创建一个字符串数组。2) 我在上面的 for 循环中创建一个 if 语句,用于检查字符串是否来自已购买的类别 3) 我将值“null”赋予所有尚未购买的字符串,然后添加一个 if 语句仅执行 SQL if sqlString[n] 不为空。

你们知道如何最好地设置它吗?

4

2 回答 2

0

有很多方法可以做到这一点,我认为会有不止 1 个好的答案。如果您有服务器,则可以执行诸如返回授权数据库/字符串/等列表之类的操作。您可以使用它来引用不同的表。您还可以创建表或使用下载表的共享首选项。名单还在继续。

服务器选项将增加一层安全性。存储的表索引更容易被盗用,但也可能更容易实现,并使您能够离线使用类别。

于 2012-11-02T19:54:43.387 回答
0

您是否考虑过从一个完整的数据库开始——即包含任何人都可以购买的所有问题——然后删除那些不再适用的问题?

于 2012-11-02T21:31:42.117 回答