Ir para conteúdo
vinihhylian0103

DATABASE IS LOCKED DELPHI MOBILE

Recommended Posts

Estou fazendo um projeto de Delphi escola e nele tenho que gravar dados no SQLITE. Estou usando o seguinte código:

 

unit UClube;

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.ListView.Appearances, FMX.ListView.Adapters.Base,
  FMX.StdCtrls, FMX.ListView, FMX.DateTimeCtrls, FMX.Edit,
  FMX.Controls.Presentation, FMX.TabControl, FireDAC.Stan.Intf,
  FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf,
  FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys,
  FireDAC.Phys.SQLite, FireDAC.Phys.SQLiteDef, FireDAC.Stan.ExprFuncs,
  FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt,
  FireDAC.FMXUI.Wait, System.Rtti, System.Bindings.Outputs, Fmx.Bind.Editors,
  Data.Bind.EngExt, Fmx.Bind.DBEngExt, Data.DB, FireDAC.Comp.DataSet,
  Data.Bind.Components, Data.Bind.DBScope, FireDAC.Comp.UI, FireDAC.Comp.Client, System.IOUtils;

type
  TForm1 = class(TForm)
    TabControl1: TTabControl;
    TabItem2: TTabItem;
    tb1: TTabItem;
    lvSocio: TListView;
    btnSalvar: TButton;
    btnCancelar: TButton;
    btnEditar: TButton;
    btnExcluirr: TButton;
    Panel1: TPanel;
    edtDataNasc: TDateEdit;
    edtCod: TEdit;
    edtNome: TEdit;
    edtRg: TEdit;
    edtCPF: TEdit;
    edtEndereco: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    labwl: TLabel;
    NOME: TLabel;
    Button5: TButton;
    Panel2: TPanel;
    edtDataA: TDateEdit;
    edtCodSocio: TEdit;
    Label6: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    rdbSocio: TRadioButton;
    edtNomeA: TEdit;
    btnNovoA: TButton;
    edtHoraIA: TEdit;
    Label7: TLabel;
    Edit7: TEdit;
    edtHoraFA: TLabel;
    edtDescricaoA: TEdit;
    Label9: TLabel;
    edtValorA: TEdit;
    btnCancelarA: TButton;
    btnEditarA: TButton;
    btnExcluirA: TButton;
    btnSalvarA: TButton;
    lvAgendamento: TListView;
    FDConnPrincipal: TFDConnection;
    qrSocio: TFDQuery;
    qrAgendamento: TFDQuery;
    FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink;
    FDGUIxWaitCursor1: TFDGUIxWaitCursor;
    BindSourceDB1: TBindSourceDB;
    BindingsList1: TBindingsList;
    LinkListControlToField1: TLinkListControlToField;
    LinkControlToField1: TLinkControlToField;
    LinkControlToField2: TLinkControlToField;
    LinkControlToField3: TLinkControlToField;
    LinkControlToField4: TLinkControlToField;
    LinkControlToField5: TLinkControlToField;
    LinkControlToField6: TLinkControlToField;
    qrSocioID: TFDAutoIncField;
    qrSocioNOME: TStringField;
    qrSocioRG: TStringField;
    qrSocioCPF: TStringField;
    qrSocioENDERECO: TStringField;
    qrSocioDATA_NASC: TDateField;
    qrSocioCODIGO: TIntegerField;
    qrAgendamentoID: TFDAutoIncField;
    qrAgendamentoNOME: TStringField;
    qrAgendamentoCODIGO: TIntegerField;
    qrAgendamentoDESCRICAO: TWideMemoField;
    qrAgendamentoDATA: TDateField;
    qrAgendamentoHORA_INICIO: TStringField;
    qrAgendamentoHORARIO_FIM: TStringField;
    qrAgendamentoVALOR: TLargeintField;
    qrAgendamentoSOCIO: TStringField;
    procedure rdbSocioChange(Sender: TObject);
    procedure btnSalvarClick(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure btnCancelarClick(Sender: TObject);
    procedure btnEditarClick(Sender: TObject);
    procedure btnExcluirrClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.btnCancelarClick(Sender: TObject);
begin
qrSocio.Cancel;
Panel1.Enabled := False;
end;

procedure TForm1.btnEditarClick(Sender: TObject);
begin
if qrSocio.RecordCount > 0 then
begin
  qrSocio.Edit;
  Panel1.Enabled := True;
  edtNome.SetFocus;
end;
end;

procedure TForm1.btnExcluirrClick(Sender: TObject);
begin
if qrSocio.RecordCount = 0 then
abort;
qrSocio.Delete;
ShowMessage('Dados excluídos!');
end;

procedure TForm1.btnSalvarClick(Sender: TObject);
begin
if edtNome.Text = '' then
begin
ShowMessage('O nome não pode estar vázio!');
edtNome.SetFocus;
abort;
end;
qrSocio.Post;
qrSocio.Refresh;
Panel1.Enabled := False;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Panel1.Enabled := True;
edtNome.SetFocus;
qrSocio.Append;
end;

procedure TForm1.FormShow(Sender: TObject);
  begin
  FDConnPrincipal.Connected := True;
  try
 {$IF DEFINED (IOS) or DEFINED (ANDROID)}
  FDConnPrincipal.Params.Values['DATABASE'] := TPath.Combine(TPath.GetDocumentsPath, 'BD_CLUBE.s3db');
  {$ENDIF}
  except on E: Exception do
  ShowMessage(e.Message);
  end;
  qrSocio.Open();
end;

procedure TForm1.rdbSocioChange(Sender: TObject);
begin
 if rdbSocio.IsChecked = true then
 begin
 edtCodSocio.Enabled := true;
 edtCodSocio.SetFocus;
 end;
end;

end.


E recebo o seguinte erro: image.thumb.png.09517599cccc2e4d1cca09812515aff6.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Daniel Jose Sobrinho
      Olá, eu tenho um memo em Delphi com as seguintes linhas
       
      CALDO DE GALINHA
      LEMON PEPPER
       
      Preciso que fique com 10 ponto e virgula, já contando os que vão estar no espaço em branco assim:
       
      CALDO;DE;GALINHA;;;;;;;;
      LEMON;PEPPER;;;;;;;;;
       
      Pra substituir os espaços em branco já usei o stringreplace e funcionou corretamente:
       
      memo1.text := StringReplace(memo1.text,',',';',[rfReplaceAll]);
    • Por pashaa
      Como podem ver a google não aceita mais a SDK da unity ads por motivos da empresa
      Então resolvi remover toda a SDK do meu código. Libs,linhas de comando, tudo. e mesmo assim ainda ela acusa que tenho a sdk dentro do meu app
      Já tenho mais ou menos 1 ano programando em android e nunca tinha visto algo sobre ou esse erro persistir já que tirei tudo de dentro do app
      A minha dúvida é, onde estou errando? Onde deixei alguma coisa sobre essa sdk?Que inclusive coloquei pra teste a uns 5 meses atrás e até tinha esquecido dela kk
      Peço que me ajudem dando sugestões de como remover por completo pois eu praticamente reverti o processo de adicionar a SDK e todo tipo de linha relacionada a unity.ads
       

    • Por Fernando Rafael
      Bom dia, estou baixando arquivos que estão em uma hospedagem própria para serem acessados por um aplicativo que estou desenvolvendo (consigo fazer normalmente utilizando os comandos citado mais a baixo), porém os arquivos ficam salvos na pasta padrão de DOWNLOADS do Android, minha intenção não é ficar acumulando estes arquivos no aparelho, ou esperar que o usuário exclua manualmente, gostaria em salva-los em uma pasta interna do aplicativo para que seja possível excluir automaticamente pelo próprio aplicativo, já tentei como alternativa excluir esses arquivos da pasta DOWNLOADS, mas não consegui...
       
      Segue o código que estou usando para baixar os arquivos, queria adaptar para baixar direto na pasta interna do aplicativo, ou como alternativa caso isso não seja possível, conseguir excluir esses arquivos da pasta DOWNLOADS do Android...
       
      String url = "https://www.site.com/arquivo.pdf"; //Arquivo que vou baixar DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setDescription("Alguma descrição"); request.setTitle("Algum titulo"); //A notificação de conslusão só esta disponível a partir da API 11 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } //Salvando o arquivo no diretório de Downloads request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "arquivo.pdf"); DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); manager.enqueue(request);  
    • Por Fernando Rafael
      Bom dia, alguém poderia me ajudar com esse problema? 
       
      Estou fazendo um aplicativo bem simples em que sua única função será criar uma pasta no celular (em local acessível pelo gerenciador de arquivos do usuário), e posteriormente copiar arquivos de outro local ou rede e colocar nesta pasta.
       
      Fiz algumas pesquisas, mas por incrível que pareça não encontrei algo que tenha funcionando. Também tenho dúvidas sobre qual seria o equivalente ao "C:/" do Android.
    • Por jjunior100
      Preciso armazenar o total das páginas de um determinado documento em uma variável no delphi. Sei como inserir a informação no modelo MSWord.Selection.Fields.Add( Range:=MSWord.Selection.Range, Type:=wdFieldEmpty, Text:= 'NUMPAGES * Arabic ', PreserveFormatting:=True);
      mas como armazenar essa informação em uma variável tipo integer? Obrigado
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.