Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laden Sie die Werte der SQL-Tabelle zur Offline-Wiederverwendung herunter

Für FLASH:

Um Daten lokal mit Flash zu speichern, können Sie eine von drei Methoden verwenden:den Flash Player-Cache, ein SharedObject , oder eine Dateireferenz Objekt. Und vergessen Sie für Ihre lokale Datei PHP und MySQL, da wir nur über die Daten sprechen, die Sie erhalten haben ( json, xml, txt, ... ).

- Flash Player-Cache :

Sie sollten wissen, dass Flash Player standardmäßig eine lokale Kopie Ihrer Datei in seinem Cache ablegt. Sie können diese lokale Kopie als Offline-Quelle Ihrer Daten verwenden, aber vergessen Sie hier nicht, dass Flash Player nicht die letzte Version Ihrer Remote-Datei gespeichert hat, sondern die erste und dass http://www.example.com/data.php unterscheidet sich von http://www.example.com/data.php?123 auch wenn es die gleiche Datei ist! Weitere Einzelheiten dazu finden Sie unter meine Antwort auf diese Frage .

- SharedObject :

Ich kenne die Größe Ihrer geladenen Daten nicht, aber wie Adobe zu SharedObject sagte:

Ich denke, das wird nicht für große Dateien verwendet und es wird nicht empfohlen, Dateien zu speichern, sondern einige einfache Daten. Als Cookie für den Browser benötigt SharedOject natürlich die Berechtigung des Benutzers, Daten auf die Festplatte zu schreiben, und der Benutzer kann sie jederzeit löschen.

- Dateireferenz :

Ich denke, das ist der beste Weg, um das zu tun, wonach Sie suchen. Sie sollten wissen, dass Ihr Benutzer zum Speichern einer Datei mit FileReference aufgefordert wird, eine Datei zum Speichern von Daten auszuwählen und sie ein zweites Mal zu lesen. Wenn Sie also keine Interaktion eines Benutzers mit Ihrer Anwendung wünschen, vergessen Sie diese Methode.

FileReference mit Beispiel:

var local_file_name:String = 'local.data',
    file:FileReference = new FileReference(),
    local_file_filter:FileFilter = new FileFilter('local data file', '*.data'),
    remote_data_url:String = 'http://www.example.com/data.php',
    url_request:URLRequest,
    url_loader:URLLoader,       
    connected:Boolean = true;

if(connected){
    get_remote_data();
} else {
    get_local_data();
}

function get_remote_data(): void {
    //we use a param to be sure that we have always the last version of our file
    url_request = new URLRequest(remote_data_url + ('?' + new Date().getTime()));
    url_loader = new URLLoader();
    url_loader.addEventListener(Event.COMPLETE, on_data_loaded);
    url_loader.load(url_request);           
}

function get_local_data(): void {
    // show the select dialog to the user to select the local data file
    file.browse([local_file_filter]);
    file.addEventListener(Event.SELECT, on_file_selected);          
}

function on_data_loaded(e:Event): void {
    var data:String = e.target.data;
    // if the remote data is successfully loaded, save it on a local file 
    if(connected){
        // show the save dialog and save data to a local file
        file.save(data, local_file_name);
    }
    // use your loaded data
    trace(data);            
}

function on_file_selected(e:Event): void {
    file.addEventListener(Event.COMPLETE, on_data_loaded);
    file.load();
}

Dieser Code wird dem Benutzer bei jedem Speichern-Dialog angezeigt, natürlich ist es nur ein Beispiel, Sie müssen es an Ihre Bedürfnisse anpassen ...

BEARBEITEN

Für LUFT:

Bei AIR benötigen wir kein FileReference-Objekt, stattdessen verwenden wir Datei und ein FileStream Objekt zum Speichern von Daten :

// for example, our local file will be saved in the same dir of our AIR app
var file:File = new File( File.applicationDirectory.resolvePath('local.data').nativePath ),
    remote_data_url:String = 'http://www.example.com/data.php',
    data_url:String = remote_data_url,
    url_request:URLRequest,
    url_loader:URLLoader,       
    connected:Boolean = true;

if(!connected){
    // if we are not connected, we use the path of the local file
    data_url = file.nativePath;     
}

load_data();

function load_data(): void {
    url_request = new URLRequest(data_url);
    url_loader = new URLLoader();
    url_loader.addEventListener(Event.COMPLETE, on_data_loaded);
    url_loader.load(url_request);           
}

function on_data_loaded(e:Event): void {
    var data:String = e.target.data;
    if(connected){          
        // save data to the local file
        var file_stream:FileStream = new FileStream();
            file_stream.open(file, FileMode.WRITE);
            file_stream.writeUTFBytes(data);
            file_stream.close();
    }
    trace(data);            
}

Hoffe das kann helfen.