문제

저는 2SQLite 데이터베이스,하나의 서버에서 다운로드(server.db고),중 하나로 사용되는 스토리지에서 클라이언트(client.db).내가 필요로 수행하는 다양한 동기화에 대한 쿼리를 클라이언트 데이터베이스의 데이터를 사용하여 서버 데이터베이스에 입력됩니다.

예를 들어,내가 원하는 모든 행을 삭제하려면에 client.db tRole 테이블,그리고 다시 모든 행에 server.db tRole 테이블.

또 다른 예를 들어,내가 원하는 모든 행을 삭제하려면에 client.db tFile 테이블 fileID 에 없 server.db tFile 테이블.

SQL Server 에서 다음을 수행할 수 있습니다 단지 앞에는 테이블과 함께 데이터베이스 이름이 있습니다.어쨌든 이를 위해서 SQLite 를 사용하여 Adobe Air?

도움이 되었습니까?

해결책

나는 그냥 보면서 공 SQL API,가 attach 방법 SQLConnection 그것은 보이는 정확하게 당신이 필요합니다.

I 테스트하지 않았지만,이에 따라 문서 작동:

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 API 요즘.에는 테이블의 데이터베이스를 열었으로 open 사용할 수 있습니다 main.tableName, 모든 연결된 데이터베이스에 부여될 수 있는 모든 이름에서 모두(otherDb 위의 예에서).

다른 팁

그것은 가능한 이러한 데이터베이스에서 한 번에 Sqlite 지만,그것은 의심스러운 경우에 할 수 있는 작업할 때부터 코드/AIR.명령 라인에서 클라이언트 실행 ATTACH DATABASE path/to/other.db AS otherDb 다음 참조할 수 있습니다 테이블에서 데이터베이스 otherDb.tableName 로 MySQL 또는 SQL Server.

테이블에 연결된 데이터베이스에 참조할 수 있는 구문을 사용하여 데이터베이스 이름입니다.테이블-이름입니다.

첨부 데이터베이스에서 문서 sqlite.org

이 코드는 일을 할 수 있습니다,그것은 쓸 내:

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;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top