Páginas

quarta-feira, 19 de janeiro de 2011

Acesso ao banco Progress (Conexão e Transações)

No mundo .Net, a manipulação de dados é bastante facilitada devido ao uso das classes contidas na namespace System.Data. O uso de objetos como Dataset, Datatable, DataRow faz com que sua aplicação utilize o modelo de dados desconectado.

O Framework utiliza todo o potencial do .Net para a manipulação de registros e demais funcionalidades. No exemplo a seguir mostro como é realizada uma conexão com o banco de dados, utilizando uma transação 4GL e retornando os dados da tabela usuário.

Dim conn As New PROConnection(True)
Dim usuario As New SysUsuario(conn.AppServer)
Dim dtUsuario As ttSysUsuarioDataTable
Try
   conn.Transaction.BeginTransaction()
   dtUsuario = usuario.GetAll
   MsgBox(dtUsuario.Rows.Count)
   conn.Transaction.CommitTransaction()
Catch ex As Exception
   conn.Transaction.RollbackTransaction()
   MsgBox(ex.Message)
Finally
   conn.AppServer.Shutdown()
End Try

Realizada a conexão com o banco de dados o objeto dtUsuario é populado com todos os registros da tabela SysUsuario, conforme utilizado no exemplo. Após o encerramento da transação e da conexão, a classe pode fazer uso do modelo desconectado do .Net. Pode-se então popular, por exemplo, um componente DataGridView.
 
O exemplo abaixo mostra como é realizada as operações de Inclusão, Modificação e Eliminação de um registro na mesma tabela (SysUsuario) utilizada no caso anterior.
 
Dim conn As New PROConnection(True)
Dim usuario As New SysUsuario(conn.AppServer)
Dim drUsuario As ttSysUsuarioRow = Nothing
Try
   conn.Transaction.BeginTransaction()

   'Cria o usuário 3
   drUsuario = usuario.NewRecord()
   drUsuario.User_ID = 3
   drUsuario.Nome = "Teste 3"
   drUsuario.Email = "teste@teste.com"
   drUsuario.Inativo = False
   drUsuario.Login = "teste3"
   drUsuario.Senha = SimpleCryptography.Encrypt("1234")
   drUsuario.TentativasLogin = 0
   usuario.Save(drUsuario)

   'Busca o usuário 3 e atualiza o campo e-mail
   drUsuario = usuario.GetRecord(New Object() {3})
   drUsuario.Email = "teste3@teste.com.br"
   usuario.Save(drUsuario)

   'Busca o usuário 3 e elimina
   drUsuario = usuario.GetRecord(New Object() {3})
   usuario.Delete(drUsuario)

   conn.Transaction.CommitTransaction()

Catch ex As Exception
   conn.Transaction.RollbackTransaction()
   MsgBox(ex.Message)
Finally
   conn.AppServer.Shutdown()
End Try

O Framework trás o modelo de transação do Progress para o domínio da aplicação .Net.

Este modelo de dados é a parte introdutória aos conceitos de conectividade com o banco de dados Progress.

Em breve mostrarei o modelo de apresentação (Templates) que já realizam estas operações da camada CRUD (Create, Read, Update, Delete) tornando o desenvolvimento de aplicações simples e mantendo assim o foco no desenvolvimento na "Regra de Negócio".


Carlos R. Nobrega
Arquiteto de Soluções .Net

Nenhum comentário:

Postar um comentário