A több SQLite adatbázis egyszerre

szavazat
7

Nekem van 2 SQLite adatbázisok, az egyik letöltött szerver ( server.db), és egy használható tároló az ügyfél ( client.db). Meg kell végre különböző szinkronizálási lekérdezéseket az ügyfél adatbázis adatait felhasználva, a szerver adatbázisban.

Például, azt akarom, hogy törölje az összes sort a client.db tRoletáblázatban, és újra benépesítik az összes sort a server.db tRoletáblázatban.

Egy másik példa, azt akarja törölni az összes sort a client.db tFiletáblázatban, ahol a fileIDnem az server.db tFileasztalra.

Az SQL Server akkor csak előtagot a táblát a neve az adatbázisban. Van egyébként, hogy ezt SQLite Adobe Air?

A kérdést 05/08/2008 17:09
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
7

Csak néztem az AIR SQL API, és van egy attachmódszer SQLConnectionúgy néz ki, hogy pontosan mire van szüksége.

Én még nem tesztelték, de a leírás szerint meg kell dolgozni:

var connection : SQLConnection = new SQLConnection();

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

var statement : SQLStatement = new SQLStatement();

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

Lehetnek hibák, hogy a kód snipplet, nem dolgoztam sokat a AIR SQL API mostanában. Figyeljük meg, hogy a táblák az adatbázis nyitott opena használatával elérhető main.tableName, hogy bármelyik mellékelt adatbázis lehet bármilyen nevet egyáltalán ( otherDba fenti példában).

Válaszolt 13/08/2008 17:16
a forrás felhasználó

szavazat
1

Lehetséges, hogy nyissa több adatbázis egyszerre Sqlite, de ez kétséges, ha lehet tenni, ha dolgozik Flex / AIR. A parancssori kliens fut ATTACH DATABASE path/to/other.db AS otherDb, és akkor lehet hivatkozni a táblázatokat, hogy adatbázis otherDb.tableNameakárcsak MySQL vagy SQL Server.

Táblázatok csatolt adatbázisban nevezhetjük szintaxis használatával adatbázis-name.table neve.

MELLÉKELJEN DATABASE dokumentációt sqlite.org

Válaszolt 12/08/2008 13:55
a forrás felhasználó

szavazat
0

ez a kód működik, akkor írjon nekem:

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;
    }
}
Válaszolt 15/12/2008 17:46
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more