Aynı anda birden fazla SQLite veritabanlarını kullanarak

oy
7

Ben 2 SQLite veritabanları, tek bir sunucudan (indirilebilir var server.db) ve bir istemci üzerinde depo olarak kullanılan ( client.db). Ben sunucu veritabanından verileri kullanarak, müşteri veritabanı üzerinde çeşitli senkronizasyon sorguları gerçekleştirmek gerekir.

Örneğin, ben tüm satırları silmek istediğiniz client.db tRolemasa ve tüm satırlar ile yeniden oluşturulacaktır server.db tRolemasaya.

Başka bir örnek, ben tüm satırları silmek istediğiniz client.db tFiletabloda fileIDdeğil server.db tFilemasada.

SQL Server sadece veritabanının adı ile tablo önek. Adobe Air kullanarak SQLite'ta bunu yine de var mı?

Oluştur 05/08/2008 saat 17:09
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
7

Sadece HAVA SQL API baktı ve bir var attachüzerinde yöntem SQLConnectionbunun tam olarak neye ihtiyacınız görünüyor.

Bu test, ancak çalışması gerekir belgelere göre değil:

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();

Bu kod snipplet hatalar, son zamanlarda HAVA SQL API ile çok çalışmamış olabilir. Veri tabanı tabloları ile açılan edin openkullanılarak elde edilmiştir main.tableName(, takılı bir veritabanı hiç bir adı verilebilir otherDbyukarıdaki gibi).

Cevap 13/08/2008 saat 17:16
kaynak kullanıcı

oy
1

Bir zamanlar SQLite'ta anda birden veritabanlarını açmak mümkündür, ancak Flex / AIR gelen çalışırken yapılabilir eğer şüpheli. Komut satırı istemcisi olarak çalıştırmak ATTACH DATABASE path/to/other.db AS otherDbve sonra olarak bu veritabanındaki tablolar başvurabilir otherDb.tableNamesadece MySQL veya SQL Server gibi.

Ekli veritabanında Tablolar sözdizimi veritabanı name.table-adını kullanarak ifade edilebilir.

sqlite.org de VERİTABANI belgelerine ATTACH

Cevap 12/08/2008 saat 13:55
kaynak kullanıcı

oy
0

Bu kod bir iş olabilir, bu beni yazma geçerli:

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;
    }
}
Cevap 15/12/2008 saat 17:46
kaynak kullanıcı

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