安卓 : Insert multiple rows into sqlite database not working

标签 android sqlite

我正在使用以下方法为 android 项目将单行插入数据库。

myDB.execSQL("INSERT INTO "
 + Buss
 + " (BussName, RouteName)"
 + " VALUES ('buss1', 'buss2');");

它工作正常。我看到这个链接 Inserting multiple rows in sqlite database .我在我的 android 项目中尝试了这种方法(插入多行),但它不起作用。

myDB.execSQL("INSERT INTO "
 + Buss
 + " (BussName, RouteName)"
 + " VALUES ('buss1', 'buss2'),('buss1', 'buss2'),('buss1', 'buss2');");

怎么做?

最佳答案

您需要为每一行调用单独的插入语句。

出于性能原因,您可以将每隔几个调用(比如约 20 个)分组到一个事务中:

myDb.beginTransaction();
   for(<your loop definition>){ myDb.execSQL(<your insert statement>) }
myDb.setTransactionSuccessful();
myDb.endTransaction();

主要思想是不在每个插入的行上写入物理数据库文件,而是每隔几行写入一次。在其他方面,只要插入的数据没有保存在“驱动器”上,它就在内存中。对于小型数据集,您可以在一个 block 中开始事务、进行所有插入和结束事务。

对于更大的数据,您应该使事务更小。

使用准备语句而不是标准语句也是一个好主意,因为 SQL 解释器只需要解析一次查询 - 更多信息可以在这里找到:How do I use prepared statements in SQlite in Android?

关于安卓 : Insert multiple rows into sqlite database not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427663/

相关文章:

c# - Xamarin 蓝牙扫描

android - 替换了 Android 项目中的图像,但不会在项目中更新

ANDROID SQLITE 检查表是否有数据

android - Android 内容提供程序中来自多个进程的多次写入

java - 如何在Recycler View适配器中访问exoplayer方法

android - Android OS Gallery 上使用的字体

android - 填充不同大小的布局

python - 当我尝试使用syncdb时,重复的user_id错误来自哪里?

SQL - 在新列而不是新行上使用多个 WHERE 条件进行 SELECT

java - sqlite android java中没有这样的列