Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

baixar valores da tabela sql para reutilização offline


Para FLASH:

Para salvar dados localmente com flash, você pode usar uma das três maneiras :o cache do Flash Player, um SharedObject , ou um FileReference objeto. E para o seu arquivo local, esqueça PHP e MySQL porque estamos falando apenas dos dados que você obteve ( json, xml, txt, ... ).

- Cache do Flash Player:

Você deve saber que, por padrão, o flash player coloca uma cópia local do seu arquivo em seu cache. Você pode usar esta cópia local como uma fonte offline de seus dados, mas aqui não esqueça que o flash player não salvou a última versão do seu arquivo remoto, mas a primeira e que http://www.example.com/data.php é diferente de http://www.example.com/data.php?123 mesmo que seja o mesmo arquivo! Para mais detalhes sobre isso, dê uma olhada em minha resposta a esta pergunta .

- SharedObject :

Não sei o tamanho dos seus dados carregados, mas como a Adobe disse sobre SharedObject :

Acho que não é usado para arquivos grandes e não é recomendado armazenar arquivos e sim alguns dados simples. Obviamente, como um cookie para o navegador, o SharedOject precisa da autorização do usuário para gravar dados no disco rígido, e o usuário pode excluí-lo a qualquer momento.

- FileReference :

Eu acho que esta é a melhor maneira de fazer o que você está procurando. Você deve saber que para salvar um arquivo usando FileReference, seu usuário é convidado a selecionar um arquivo para salvar os dados e lê-lo em uma segunda vez. Portanto, se você não deseja a interação de nenhum usuário com seu aplicativo, esqueça dessa maneira.

FileReference usando exemplo:
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();
}

Este código irá mostrar sempre que uma caixa de diálogo de salvamento para o usuário, claro, é apenas uma amostra, você deve adaptá-lo às suas necessidades ...

EDITAR

Para AR:

Com o AIR, não precisamos de um objeto FileReference, em vez disso, usamos Arquivo e um FileStream objeto para salvar dados:
// 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);            
}

Espero que isso possa ajudar.