android - 如何在方形sqldelight中进行批量插入?

标签 android sqlite square sqldelight

感谢 square 提供 SQLDelight 并为 sqlite 数据库交互提供类型安全的 api。我正在做如下的单个插入行:

      MyTable.Insert_row insert_row =
    new MyTableModel.Insert_row(
      mOpenHelper.getWritableDatabase(),
      MyTable.FACTORY
    );
  MyTable.bind(insert_row, data);
  insert_row.program.executeInsert();

有没有办法一次对数据列表执行批量插入?

最佳答案

有点。有两种方法。自 SQLite 3.7.11(包含在 Android API 16 及更高版本中)起,您可以从 sqlite 端一次插入多个值:

INSERT INTO myTable
VALUES (?, ?), (?, ?), (?, ?);

这可能不是您想要的。只要您只创建一次插入语句,绑定(bind)和执行多行实际上非常快:

MyTable.Insert_row insert_row =
    new MyTableModel.Insert_row(
      mOpenHelper.getWritableDatabase(),
      MyTable.FACTORY
    );
for (Row row : rows) {
  MyTable.bind(insert_row, row);
  insert_row.program.executeInsert();
}

这可能更接近您想要的。目前没有计划支持从 .sq 文件端进行任意大小的批量插入。

关于android - 如何在方形sqldelight中进行批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40595231/

相关文章:

java - Android 的替代关系数据存储方法

android - android默认日期时间格式的线程安全性?

android - 是什么导致了 Android 中的 MotionEvent.ACTION_CANCEL?

sqlite - SQLite如果一个结果为空,如何选择另一行

c# - 如何构建 C# 控制台应用程序以高效使用 IDisposable 数据库资源?

Android - 将 TalkBack 辅助功能焦点设置到特定 View

卸载后删除了android SQLite数据库

python - 通过python以特定方式计算嵌套数组的平均值?

python - 在 Python 中对数字列表(或数组?)进行平方