Feed on Me

Component: Database

O componente Database lhe dá acesso a operações específicas de banco de dados. Você não precisa de um componente Database para algumas aplicações. Exigem certas operações, no entanto, que exigem um componente Database. Essas operações são discutidas nas próximas seções.

Retenção de Conexões do Banco de Dados
A propriedade KeepConnections é usada para controlar o modo como as conexões de banco de dados são tratadas quando um dataset é fechado. Se KeepConnections for false, a conexão do banco de dados será perdida quando o último dataset for fechado. Isso exige um login da próxima vez que um dataset for aberto. Não que os logins sejam tão incômodos (e realmente são), porém mais importante é que os logins gastam tempo. Não quero dizer que os logins gastam tempo no sentido que você precisa digitar um username e senha em uma caixa de diálogo de login, mas que eles gastam muito tempo de processamento e de rede para abrir uma conexão de banco de dados e conectar, mesmo que esse processo de login seja automatizado. Se você não quer se preocupar com o login toda vez que um dataser for aberto, defina KeepConnections como True.

Controle de Login
Um dos motivos para usar um component Database é controlar as operações de login. Existem duas maneiras para controlar um login. Uma é definido a propriedade LoginPrompt como False e definindo explicitamente os parâmetros de login. Você pode fazer ussi antes de abrir um dataset:
  • Database1.Params.Values['user name'] := 'SYSDBA';
  • Database1.Params.Values['password'] := 'masterkey';
O código anterior define o username e a senha para uma conexão de banco de dados Local InterBase.

Nota: Você deve ter muito cuidado com a condificação fica de informações de senha nas suas aplicações, por questões de segurança. Prompts de login são usados por um motivo. Não evite os requisitos de login, a menos que tenha um bom motivo para fazer isso.
Levando este exemplo um pouco diante, vamos supor que você tenha um formulário com um componente Database e um componente Table. Digamos que você queira criar uma conexão de banco de dados e abra uma tabela sem qualquer prompt de login. Veja o código:
  • Database1.AliasName := 'IBLOCAL';
  • Database1.DatabaseName := 'MyDatabase';
  • Database1.Params.Values['user name'] := 'SYSDBA';
  • Database1.Params.Values['password'] := 'masterkey';
  • Table1.DatabaseName := Database1.BatabaseName;
  • Table1.TableName := 'CUSTOMER';
  • Table1.Open;
Esse código primeiro degine a propriedade Alias do componente Database para IBLOCAL para a conexão com o Local Interbase. Depois a propriedade DatabaseName é definida para um nome arbitrário. Você pode usar qualquer nome que desejar para o banco de dados. Em seguida, os parâmetros de conexão do banco de dados (username e senha) são definidos. Depois disso, a propriedade DatabaseName do componente Table é definida como o valor da propriedade DatabaseName de Database, que conecta a tabela ao banco de dados. Finalmente, a propriedade TableName é definida para a tabela e está aberta.
A outra maneira de realizar um login é com o evento OnLogin. Este é gerado sempre que suas informações de login são exigidas. Para gerar este evento, você precisa certificar-se de ter a propriedade LoginPrompt definida como True. Depois disso, você pode fornecer um handler de evento para o evento OnLogin. Ele se parecerá com isto:
  • procedure TForm1.Database1Login(Database: TDatabase; LoginParams: TStrings);
  • begin
  • LoginParams.Values['user name'] := 'SYSDBA';
  • LoginParams.Values['password'] := 'masterkey';
  • end;
Este código lhe parece familiar? Ele é essencialmente o mesmo código usado anteriormente na definição direta dos parâmetros de conexão do banco de dados. Normalmente você não codificará o username e a senha (ou, pelo menos, não a senha), mas provavelmente puxaria essa informação de uma fonte externa, como um componente de edição, um arquivo de configuração ou o Registro do Windows.

Controle de Transação
Outro motivo para se usar um componente Database é para o controle de transação. Normalmente, o BDE trata do controle de transação para você. No entanto, pode haver ocasiões em que você exige o controle completo sobre o processamento da transação. Nesse caso, você pode usar os métodos de controle de transação do componente Database.
Uma transação é uma coleção de atualizações em um dataset. As atualizações incluem mudanças feitas em registros, exclusão de registros, inserção de registros e outros. Você inicia uma transação chamando o método StartTransaction. Quaisquer mudanças feitas no dataset são mantidas até que você chame o método Commit. Quando você chama Commit, todas as atualizações na transação são gravadas no banco de dados. Se você quiser abandonar as mudanças em todas as atualizações da transação atual, poderá chamar o método Rollback. O nível de isolamento da transação é controlado pelo valor da propriedade TransIsolation. (Veja o tópico TransIsolation na ajuda do Delphi se precisar de mais informações sobre níveis de isolamento de transação.)

Nota: Todas as atualizações de transação são tratadas como uma única unidade, o que significa que, quando você chama Commit, todas as atualizações são canceladas. Isso também significa que se algo sair errado durante uma confirmação de transação, nenhuma atualização na transação atual será gravada no banco de dados.

0 comentários:

No comments

Delphi Assistance

Name:

Email:

URL:

Comment:  ? Attach Image


 

Free Commenting by HaloScan.com (Basic Account)

 
Template Sky by Templates Novo Blogger