Используя несколько баз данных SQLite сразу

Вы можете это сделать полностью, это просто проблема с порядком:

[ unicode(x.strip()) if x is not None else '' for x in row ]

Обратите внимание, что это фактически использует другую конструкцию языка, условное выражение , которое само по себе не является часть синтаксиса понимания , в то время как if после for…in является частью понятий списка и используется для filter элементов из исходной итерации.

Условные выражения могут использоваться во всех ситуациях, когда вы хотите выбрать между двумя значениями выражения на основе некоторого условия. Это делает то же, что и трёхмерный оператор ?:, который существует на других языках . Например:

value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')

8
задан Shawn 25 September 2016 в 02:11
поделиться

3 ответа

Я просто посмотрел на SQL AIR API, и существует attach метод на SQLConnection это смотрит точно, в чем Вы нуждаетесь.

Я не протестировал это, но согласно документации это должно работать:

var connection : SQLConnection = new SQLConnection();

connection.open(firstDbFile);
connection.attach(secondDbFile, "otherDb");

var statement : SQLStatement = new SQLStatement();

statement.connection = connection;
statement.text = "INSERT INTO main.myTable SELECT * FROM otherDb.myTable";
statement.execute();

Могут быть ошибки в том коде snipplet, я не работал очень с SQL AIR API в последнее время. Заметьте что таблицы базы данных, открытой с open доступное использование main.tableName, любой приложенной базе данных можно дать любое имя вообще (otherDb в примере выше).

7
ответ дан 5 December 2019 в 20:21
поделиться

этот код может быть работой, это - запись меня:

package lib.tools

import flash.utils.ByteArray;
import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.data.SQLResult;
import flash.data.SQLMode; 
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
import mx.core.UIComponent;
import flash.data.SQLConnection;

public class getConn {
    public var Conn:SQLConnection;

    public function getConn(database:Array) {       
        Conn = new SQLConnection();
        var Key:ByteArray = new ByteArray();
        Key.writeUTFBytes("Some16ByteString"); 
        Conn.addEventListener(SQLErrorEvent.ERROR, createError);
        var dbFile:File = File.applicationDirectory.resolvePath(database[0]);
        Conn.open(dbFile);
        if(database.length > 1) {
            for(var i:Number = 1; i < database.length; i++) {
                var DBname:String = database[i];
                Conn.attach(DBname.split("\.")[0], File.applicationDirectory.resolvePath(DBname));
            }
        }
        Conn.open(dbFile, SQLMode.CREATE, false, 1024, Key); 
    }

    private function createError(event:SQLErrorEvent):void {
        trace("Error code:", event.error.details);
        trace("Details:", event.error.message);
    }

    public function Rs(sql:Array):Object {
        var stmt:SQLStatement = new SQLStatement();
        Conn.begin();
        stmt.sqlConnection = Conn;
        try {
            for(var i:String in sql) {          
                stmt.text = sql[i]; 
                stmt.execute();
            }
            Conn.commit();
        } catch(error:SQLErrorEvent) {
            createError(error);
            Conn.rollback();
        };
        var result:Object =stmt.getResult();
        return result;
    }
}
0
ответ дан 5 December 2019 в 20:21
поделиться

Возможно открыть несколько баз данных сразу в Sqlite, но сомнительно, может ли быть сделан при работе от Flex/AIR. В клиенте командной строки Вы работаете ATTACH DATABASE path/to/other.db AS otherDb и затем можно обратиться к таблицам в той базе данных как otherDb.tableName так же, как в MySQL или SQL Server.

Таблицы в приложенной базе данных могут быть отнесены в использование синтаксиса database-name.table-name.

Документация БАЗЫ ДАННЫХ ПРИСОЕДИНЕНИЯ по sqlite.org

1
ответ дан 5 December 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: