将数据插入 Android 中的数据库

Insert data into database in Android

这是我的第一个数据库应用程序,我希望有人能帮助我理解这个问题。我有这个插入方法:

 public long insertData(String name, int password){

      ....
        contentValues.put(KEY_NAME, name);
        contentValues.put(KEY_PASSWORD, password);

        return  db.insert(DBHelper.TABle_NAME, null, contentValues);
    }

我用这个方法可以插入很少的数据,但是如果我有几千行呢?如何将所有这些数据插入数据库?我在哪里可以写所有这些数据,额外的 class 或者什么?

据我所知,没有 'bulk load' 设施。 您只需浏览列表,然后插入项目。

您可能想想想为什么您可能会尝试将数千个项目插入到硬件受限设备(例如 phone 或平板电脑)上的数据库中。

将数据放在服务器上并创建一个 API 可以用来按页面加载数据(用于显示)会更好吗?

你可以用同样的方法来做,你只需要用你的方法捕获数千行插入到你的数据库中,你可以使用 asyntask 或服务来做到这一点

您可以使用相同的方法插入任意数量的记录,无论是 1 条还是 1,000 条。使用循环调用插入方法并将记录添加到数据库中。考虑将您的数据库执行放在 AsyncTask 中以防止您的 UI 线程挂起。

您的数据可以来自任何地方,只要它的格式适合您的函数参数 String, int

正如其他人所说,您需要进行某种迭代。 可以通过执行批量 事务 来提高效率。这是一个例子:

public int bulkInsert(@NonNull ContentValues[] values) {
    int insertCount = 0;
    SQLiteDatabase db = mSqlHelper.getWritableDatabase();
    try {
        db.beginTransaction();
        for (ContentValues value : values) {
            if (db.insertOrThrow(tableName, null, value) == -1) {
                throw new Exception("Unknown error while inserting entry in database.");
            }
            insertCount++;
        }
        db.setTransactionSuccessful();
    } catch (Exception e) {
        Log.e(LOG_TAG, "An error occurred while bulk-inserting database entries.\n" + e.getMessage(), e);
    } finally {
        db.endTransaction();
    }
    return insertCount;
}