Flash 在SQLite in AIR 3.6项目中,是否可以在一次查询中向数据库添加500多行数据?

Flash 在SQLite in AIR 3.6项目中,是否可以在一次查询中向数据库添加500多行数据?,flash,sqlite,air,insert,Flash,Sqlite,Air,Insert,我正在用Flash(AIR 3.6)创建iPad应用程序。 我需要使用SQLite数据库引擎同步成吨的数据。 我正在从服务器接收JSON格式的数据,需要将其转换为数据向量 据我所知,FlashSQLite引擎一次只允许一个插入过程,所以我决定在一个查询中添加尽可能多的内容。 我正在使用UNIONALL和INSERT,但我遇到了500个联合的限制,之后SQLite引擎拒绝合作 正因为如此,我必须创建一个结构,该结构将多达500个带有联合的插入操作相加,并运行,直到所有数据都以这种方式插入为止。对于

我正在用Flash(AIR 3.6)创建iPad应用程序。 我需要使用SQLite数据库引擎同步成吨的数据。 我正在从服务器接收JSON格式的数据,需要将其转换为数据向量

据我所知,FlashSQLite引擎一次只允许一个插入过程,所以我决定在一个查询中添加尽可能多的内容。 我正在使用UNIONALL和INSERT,但我遇到了500个联合的限制,之后SQLite引擎拒绝合作

正因为如此,我必须创建一个结构,该结构将多达500个带有联合的插入操作相加,并运行,直到所有数据都以这种方式插入为止。对于2k+行,它循环大约5次。 我试图一个接一个地插入数据,但它花费的时间是现在的300倍

最后: 在SQLite in AIR 3.6项目中,是否可以在一次查询中向数据库添加500多行数据

编辑:

在一个事务中使用多个INSERT似乎不起作用:

var sql:String = "";
sql +=  "INSERT INTO TablicaTestowa (formTypeId,name,timestamp) VALUES ('abc2','nazwa2','sg535');"
sql +=  "INSERT INTO TablicaTestowa (formTypeId,name,timestamp) VALUES ('abc3','nazwa3','gwt5htbsd');"
sql +=  "INSERT INTO TablicaTestowa (formTypeId,name,timestamp) VALUES ('abc4','nazwa4','frtgwh3jwdsed');"
createStmt.text = sql;
createStmt.addEventListener(SQLEvent.RESULT, createResult2);
createStmt.addEventListener(SQLErrorEvent.ERROR, createError2);
createStmt.execute();

仅添加第一个值('abc2','nazwa2','sg535)。或者可能是我做错了什么?

您不需要使用单一的
INSERT
查询;您可以将多个
插入到一个事务中以获得类似的性能。

当然可以

public void putAll(Context context, LinkedList<HANDLEDOBJECT> objects) {
    if (objects.size() < 1 || objects.get(0) == null)
        return;
    Log.i("Database", "Starting to insert objects to " + getTableName());

    List<String> insertCommands = new ArrayList<String>();
    int t = 0;
    while (t < objects.size()) {
        int k = 0;
        StringBuilder sb = new StringBuilder();

        sb.append("INSERT OR REPLACE INTO ").append(getTableName())
                .append("('k', 'v') ");
        for (t = t + 0; t < objects.size() && k < 450; t++) {
            k++;
            if (t % 450 != 0)
                sb.append("UNION ");
            sb.append("SELECT " + objects.get(t).getId())
                    .append(" AS k, ")
                    .append("'"
                            + GsonSerializer.getInstance().toJson(
                                    objects.get(t), getHandledObjectType())
                            + "'").append(" AS v ");

        }

        insertCommands.add(sb.toString());
    }

    for (String insertCommand : insertCommands)
        SQLiteClient.getConnetion(context).execSQL(insertCommand);

    Log.i("Database", "Successfully inserted " + t + " objects to "
            + getTableName() + "!!!");
}
public void putAll(上下文、LinkedList对象){
if(objects.size()<1 | | objects.get(0)==null)
返回;
Log.i(“数据库”,“开始向”+getTableName()插入对象”);
List insertCommands=new ArrayList();
int t=0;
而(t
不,我不能。只有第一次插入有效。其他人似乎被忽视了。