Existem inúmeras formas de acessar um banco de dados Firebird a partir de uma aplicação .NET. Sem dúvida, a melhor delas é usando o
provider nativo do Firebird para o ADO.NET, em uma arquitetura multicamadas, como faremos aqui. Então baixe e instale o MSI.
Instalando o provider ADO.NET
Criando o ASP.NET Web Site
No Delphi Prism, iniciamos um novo Web Site ASP.NET, escolhendo um location para o site, a versão do framework como .NET 3.5 e linguagem Oxygene.
Para usarmos AJAX, precisamos colocar um ScriptManager no topo do formulário. Logo abaixo, colocamos um UpdatePanel e dentro dele, um GridView e um DetailsView. No DetailsView, configure a propriedade AutoGenerateInsertButton para True e DefaultMode para Insert.
Nós colocamos um GridView para visualizar os dados, e um DetailsView para permitir a inserção, já que, diferente do DBGrid da VCL, o GridView não suporta inserção.
Referenciando o assembly do provider
O próximo passo é dar um clique de direita no nome do WebSite no Solution Explorer e escolher Add Reference. Na janela que aparece, escolhemos browse e localizamos o assembly FirebirdSql.Data.FirebirdClient.dll, no diretório de instalação do FBCliente, em c:\ProgramsFiles\FirebirdClient (padrão).
Codificando a classe de acesso a dados
Não existe DataModule no .NET Framework. Precisamos usar um framework de persistência, como o NHibernate ou ADO.NET Entity Framework. Ou construir uma classe DAL (Data Access Layer), opção que farei aqui. Então, clique de direita no Solution Explorer e adicione uma classe chamada DAL.pas ao projeto, colocando-a na pasta App_Code.
O código da classe DAL está na listagem abaixo. Aqui usamos basicamente ADO.NET, com o provider nativo do Firebird, para criar os métodos CRUD para manipular dados (escolhi a tabela Customer, que é a mais simples do banco).
namespace;
interface
uses
System,
System.Data,
System.Web.Configuration,
FirebirdSql.Data.FirebirdClient;
type
DAL = public class
public
constructor;
method Select(): DataSet;
method Insert(Cust_No: integer; Customer: String);
method Update(Cust_No: integer; Customer: String);
method Delete(Cust_No: integer);
method ConStr(): String;
end;
implementation
constructor DAL;
begin
end;
method DAL.Select(): DataSet;
begin
var Con := new FbConnection(ConStr);
var SQL := "select Cust_No, Customer from Customer";
var da := new FbDataAdapter(SQL,Con);
var ds := new DataSet();
da.Fill(ds);
result := ds;
end;
method DAL.Insert(Cust_No: integer; Customer: String);
begin
var Con := new FbConnection(ConStr);
var SQL := "insert into Customer (Customer) values (@Customer);";
var cmd := new FbCommand(SQL, Con);
cmd.Parameters.AddWithValue("@Customer",Customer);Con.Open();
try
cmd.ExecuteNonQuery();
finally
Con.Close();
end;
end;
method DAL.Update(Cust_No: integer; Customer: String);
begin
var Con := new FbConnection(ConStr);
var SQL := "update Customer set Cust_No=:Cust_No, Customer=:Customer where Cust_No=:Cust_No);";
var cmd := new FbCommand(SQL, Con);
cmd.Parameters.AddWithValue(":Cust_No",Cust_No);cmd.Parameters.AddWithValue(":Customer",Customer);Con.Open();
try
cmd.ExecuteNonQuery();
finally
Con.Close();
end;
end;
method DAL.Delete(Cust_No: integer);
begin
var Con := new FbConnection(ConStr);
var SQL := "delete from Customer where Cust_No=:Cust_No;";
var cmd := new FbCommand(SQL, Con);
cmd.Parameters.AddWithValue(":Cust_No",Cust_No); Con.Open();
try
cmd.ExecuteNonQuery();
finally
Con.Close();
end;
end;
method DAL.ConStr(): String;
begin
result := "User=SYSDBA;Password=masterkey;Database=C:\Program Files\Firebird\Firebird_1_5\examples\Employee.fdb;DataSource=localhost;"
end;
end.
Nota: Uma boa prática é colocar a ConnectionString no arquivo Web.Config.
Usando o ObjectDataSource
Para fazer a ligação entre a camada de interface AJAX e a camada de acesso a dados, vamos colocar um ObjectDataSource dentro do UpdatePanel. Nas suas Tasks, escolhemos Configure Data Source. O próximo passo é escolher nossa classe DAL e apontar os métodos.
Agora basta usar as Tasks dos controles GridView e DetailsView para apontar para o ObjectDataSource. Nas Tasks do GridView habilitamos o Update e Delete.
Testando
Pressionando Ctrl+F5 temos o resultado o Web Site.
Download deste código-fonte no site da Embarcadero