sql >> Database >  >> RDS >> Mysql

download waarden van sql-tabel voor offline hergebruik

Voor FLASH:

Om gegevens lokaal met flash op te slaan, kunt u een van de volgende drie manieren gebruiken:de Flash Player-cache, een SharedObject , of een FileReference voorwerp. En voor je lokale bestand, vergeet PHP en MySQL, want we hebben het alleen over de gegevens die je hebt (json, xml, txt, ...).

- Flash Player-cache:

U moet weten dat Flash Player standaard een lokale kopie van uw bestand in de cache plaatst. U kunt deze lokale kopie gebruiken als een offline bron van uw gegevens, maar vergeet niet dat Flash Player niet de laatste versie van uw externe bestand heeft opgeslagen, maar de eerste en dat http://www.voorbeeld.com/data.php is anders dan http://www.example.com/data.php?123 zelfs als het hetzelfde bestand is! Kijk voor meer informatie hierover op mijn antwoord op deze vraag .

- SharedObject :

Ik weet niet hoe groot je geladen gegevens zijn, maar zoals Adobe zei over SharedObject:

Ik denk dat dat niet wordt gebruikt voor grote bestanden en het wordt niet aanbevolen om bestanden op te slaan, maar enkele eenvoudige gegevens. Als cookie voor de browser heeft SharedOject natuurlijk toestemming van de gebruiker nodig om gegevens naar de harde schijf te schrijven, en de gebruiker kan deze op elk moment verwijderen.

- FileReference :

Ik denk dat dit de beste manier is om te doen wat je zoekt. U moet weten dat om een ​​bestand op te slaan met FileReference, uw gebruiker wordt uitgenodigd om een ​​bestand te selecteren om gegevens op te slaan en het een tweede keer te lezen. Dus als u geen gebruikersinteractie met uw applicatie wilt, vergeet deze manier dan.

FileReference met voorbeeld:

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

Deze code toont elke keer dat de gebruiker een dialoogvenster voor opslaan toont, het is natuurlijk slechts een voorbeeld, u moet het aanpassen aan uw behoeften ...

BEWERKEN

Voor AIR :

Met AIR hebben we geen FileReference-object nodig, maar gebruiken we Bestand en een FileStream bezwaar om gegevens op te slaan:

// 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);            
}

Ik hoop dat dat kan helpen.



  1. Selecteer op maand van een veld

  2. NULL-waarden binnen de NOT IN-clausule

  3. AWS Aurora MySQL serverloos:verbinding maken vanuit MySQL Workbench

  4. MySQL-groepering van resultaten per tijdsperiode