Criar um Metodo para Salvamento e Leitura da Base

6 respostas
R

Ola pessoal, estou aqui pensando com meus botoes, em Delphi eu tinha uma procedure para Trazer os Dados do Banco atraves de uma StoredProcedure, onde eu comparava o nome do Campo na base de Dados Field.Name e o nome do Campo no Formulario exemplo Campo nome do usuario ficava usu_nome e na base de Dados era o mesmo nome.
Agora eu estou querendo fazer a mesma coisa, ao ler a base de dados com o Hibernate eu gostaria de pegar o nome do campo na base comparar com o nome do campo no formulario e trazer os dados para a tela ?
agradeco a ajuda de todos, pois nao sei por onde comecar, tentei algumas coisas mais nao deu certo nada.

{ ============================================================================ }

procedure PBancoTL( Objeto: TIBQuery; Form: TForm; LimparTela: boolean );
(*
  Nome      : PBancoTL
  Objetivo  : Carregar os Dados do Banco de Dados Para a Tela.
  Data      : 12/01/2005.
  Autor     : Ricardo Scarpim.
  Parâmetros:
              Entrada :
                Objeto  = TQuery.
                Form    = Nome do Formulário.
*)

Var
  i     : Integer;
  Source: TComponent;
begin

  With Objeto Do
  begin

    { Se Variável Booleana Setada. }
    IF( LimparTela ) then

      { Limpar a Tela. }
      PLpForm( Form );

    { Varrer o Formulário à Procura dos Componentes. }
    For i := 0 To FieldDefs.Count - 1 Do
    begin

      { Pegar o Nome do Campo na Base de Dados e Localizar na Tela. }
      Source := Form.FindComponent( FieldDefs.Items[i].Name );

      { Se Achar Algo. }
      IF Source <> NIL then
      begin

        { Se for um Tipo de Componente Aceitavel. }
        IF( Source is TEdit )           OR
          ( Source is TMaskEdit )       OR
          ( Source is TMemo )           OR
          ( Source is TCheckBox )       OR
          ( Source is TDateEdit )       OR
          ( Source is TComboBox )       OR
          ( Source is TRadioGroup )     OR
          ( Source is TCurrencyEdit )   OR
          ( Source is TFilenameEdit )   OR
          ( Source is TDirectoryEdit )  then
        begin

          { Tipo de Campo Edit. }
          IF Source is TEdit then
            TEdit(Source).Text            := Trim( FieldByName( FieldDefs.Items[i].Name ).AsString );

          { Tipo de Campo MaskEdit. }
          IF( Source is TMaskEdit ) then
          begin

            { Se For um Telefone. }
            IF( Source ).Name = 'DES_TELEFONE'  then

              { Colocando a Máskara de Telefone. }
              TMaskEdit(Source).Text      := FFormate( FieldByName( FieldDefs.Items[i].Name ).AsString, 3 )
            else

              TMaskEdit(Source).Text      := Trim( FieldByName( FieldDefs.Items[i].Name ).AsString );
          end;

          { Tipo de Campo Memo. }
          IF Source is TMemo then
            TMemo(Source).Text            := FieldByName( FieldDefs.Items[i].Name ).AsString;

          { Tipo de Campo CheckBox. }
          IF Source is TCheckBox then
            TCheckBox(Source).Checked     := FieldByName( FieldDefs.Items[i].Name ).AsInteger = 1 ;

          { Tipo de Campo TDateEdit. }
          IF Source is TDateEdit then
            TDateEdit(Source).Text        := FieldByName( FieldDefs.Items[i].Name ).AsString;

          { Tipo de Campo ComboBox. }
          IF Source is TComboBox then
            TComboBox(Source).Text        := FieldByName( FieldDefs.Items[i].Name).AsString;

          { Tipo de Campo TRadioGroup. }
          IF Source is TRadioGroup then
            TRadioGroup(Source).ItemIndex := FieldByName( FieldDefs.Items[i].Name ).AsInteger;

          { Tipo de Campo TCurrencyEdit }
          IF Source is TCurrencyEdit then
            TCurrencyEdit(Source).Text    := FieldByName( FieldDefs.Items[i].Name ).AsString;

          { Tipo de Campo TFilenameEdit }
          IF Source is TFilenameEdit then
            TFilenameEdit(Source).Text    := FieldByName( FieldDefs.Items[i].Name ).AsString;

          { Tipo de Campo TDirectoryEdit. }
          IF Source is TDirectoryEdit then
            TDirectoryEdit(Source).Text   := FieldByName( FieldDefs.Items[i].Name ).AsString;
        end;
      end;
    end;
  end;
end;

6 Respostas

Hebert_Coelho

Vc tem que ter em mente que no delphi vc vai sempre trazer colunas em linhas.

Com o hibernate, você terá classes e não colunas + textos. O Hibernate fará essa conversão para você.

Nesse post, eu mostro como salvar, pesquisar (através do ID), editar um objeto.

Espero que te ajude: Hibernate 3 com JPA 2.

Hebert_Coelho

Para realizar a consulta do modo como você quer, você pode utilizar NamedQuery que irá te retorar os objetos do DB.

jorgeneto

Você precisa mudar o paradigma. Acho ainda melhor você pesquisar sobre JDBC antes de pesquisar sobre o hibernate…

R

Muito obrigado amigos, alguem teria um exemplo de como pegar estes objetos automagicamente ? Digo sem eu precisar dar nome aos bois pois eu gostaria de passar a NamedQuery e que atraves da funcao ele comparasse nome do campo Objeto e nome do campo Formulario ?

Hebert_Coelho

Cara, NamedQuery não é passada por parametro mas executada como se fosse uma query pré-carregada.

Siga o conselho do jorgeneto.

Java não é e não tem Silver Bullet.

R

E complicado, mais Vamos Tentar, hehehehe, agradeco a ajuda de todos, quando tiver um resultado vou postar novamente, ficamos no aguardo …

Criado 25 de dezembro de 2011
Ultima resposta 26 de dez. de 2011
Respostas 6
Participantes 3