PDA

Ver la Versión Completa : Almacenar de forma local datos de sesión de una App


pape19
18-07-2014, 22:31:35
Buenas tardes amigos.

Estoy desarrollando una aplicación mobile, en Delphi XE5; utilizo datasnap, que se conecta a un servidor remoto donde se encuentra la BD.

El usuario inicia la App, se loguea, y utiliza la misma. Lo que quiero lograr es alguna forma de guardar los datos de esa sesión localmente, de manera que el usuario no tenga que loguearse cada vez que quiere utilizar el programa.

Otra opción que le veo, es guardar en la base de datos remota un id de sesión, pero que id utilizo? es decir, que número que me identifique solamente ese dispositivo?.

Agradecería sus ideas, muchas gracias.

mamcx
18-07-2014, 22:33:49
Aparte de usar xml o json, sqlite es una opcion muy popular de hacer eso.

pape19
22-07-2014, 13:06:01
mamcx gracias por tu respuesta.

Respecto a sqLite, no quería crear una BD local por dos datos. En aplicaciones de escritorio para Win utilizaba algún archivo ini y leía el mismo al ejecutar la aplicación.

Respecto a las otras dos opciones que comentas, las desconozco, podrías explicarte un poco más?

Muchas gracias!

Casimiro Notevi
22-07-2014, 13:07:43
Respecto a sqLite, no quería crear una BD local por dos datos. En aplicaciones de escritorio para Win utilizaba algún archivo ini y leía el mismo al ejecutar la aplicación.
Pues haz algo similar, guarda esos datos en un ficherito de texto.

pape19
22-07-2014, 13:11:19
Perdon por mi ignorancia Casimiro, pero esto en Android se puede?

Casimiro Notevi
22-07-2014, 13:32:03
Claro que se puede, como con cualquier otro sistema. Me parece que en las demos viene un ejemplo de escribir y leer un fichero de texto, a ver si lo encuentro...

fredo
24-05-2015, 17:06:51
Usa Client Data set es facil de guardar y leer en cualquier plataforma, saludos!

nlsgarcia
28-05-2015, 05:17:04
pape19,


...en Delphi XE5...utilizo Datasnap, que se conecta a un servidor remoto...Lo que quiero lograr es alguna forma de guardar los datos de esa sesión localmente...

:rolleyes:

Revisa este código:

unit Unit1;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.ListView.Types, FMX.StdCtrls, FMX.ListView, Data.DB, Datasnap.DBClient,
FMX.Layouts, FMX.ListBox;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Status : Array[0..1] of Boolean = (False, True);

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
var
Table : TClientDataset;
i : Integer;

begin

Randomize;

Table := TClientDataset.Create(nil);
Table.FieldDefs.Add('CodUser', ftInteger, 0, False);
Table.FieldDefs.Add('NameUser', ftString, 50, False);
Table.FieldDefs.Add('Date', ftDate, 0, False);
Table.FieldDefs.Add('Status', ftBoolean, 0, False);
Table.CreateDataset;
Table.Open;

Randomize;

for i := 1 to 10 do
begin
Table.Append;
Table.FieldByName('CodUser').AsInteger := i;
Table.FieldByName('NameUser').AsString := 'Name-' + IntToStr(Random(100));
Table.FieldByName('Date').AsDateTime := Now + Random(730);
Table.FieldByName('Status').AsBoolean := Status[Random(2)];
Table.Post;
end;

Table.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Table.cds');
Table.Close;
Table.Free

end;

procedure TForm1.Button2Click(Sender: TObject);
var
Table : TClientDataset;
i : Integer;
S : String;

begin

Table := TClientDataset.Create(nil);
Table.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Table.cds');
Table.Open;
Table.First;

ListBox1.Clear;

while not Table.Eof do
begin
S := Format('%s %s %s %s', [Table.FieldByName('CodUser').Value,
Table.FieldByName('NameUser').Value,
Table.FieldByName('Date').Value,
Table.FieldByName('Status').Value]);
ListBox1.Items.Add(S);
Table.Next;
end;

Table.Close;
Table.Free

end;

end.

El código anterior en Delphi XE7 sobre Windows 7 Professional x32, Ejemplifica el uso en FMX del componente TClientDataset para generar, guardar y leer información de la aplicación, como se muestra en la siguiente imagen:

http://i.imgur.com/bdB6X3o.gif

Espero sea útil :)

Nelson.