Melhor maneira de se conectar ao Interbase 7.1 usando .NET C #
Pergunta
Alguém poderia explicar a melhor maneira de se conectar a um banco de dados Interbase 7.1 usando .NET / C #?
O aplicativo será instalado em muitos computadores de usuários finais para que o menos "add-ons" que vou ter para embalar com a minha aplicação melhor.
Solução
CodeGear oferece uma ADO.NET 2.0 motorista livre para usuários registrados do InterBase aqui:
http://cc.embarcadero.com/item/25497
Observe que "usuários registrados do InterBase" inclui a livre o InterBase 2007 Developers Edition. O download diz que é para 2007, mas funciona muito bem com InterBase 7, ea equipe InterBase no CodeGear me disse que eles não têm nenhum problema com as pessoas a usá-lo para esse fim.
Eu não recomendo usar um driver projetado para Firebird, como InterBase e Firebird tem um pouco diferentes sintaxes SQL, e diferem em outras características, bem. Em particular, eu acho que o uso de qualquer driver dependente fbclient.dll com InterBase é completamente perigoso.
Outras dicas
Eu acho que o Firebird .net provedor é o mesmo que aquele que está em mono. Ambos são excelente btw.
O código no arquivo de ajuda funciona em muitas situações, mas não todos, especialmente no Windows 8.1, Windows Server 2012 máquinas.
Certifique-se de obter as últimas InterBase_ADO.NET da Embarcadero. A versão que eu atualizado para a versão foi 16.0.4327.44959 de Borland.Data.AdoDbxClient.dll. (Clique direito do mouse em arquivo, propriedades, detalhes para ver o número da versão). A instalação também cria uma pasta versão x64 de 64 bits, embora eu não usá-lo. I alvo x86 sem problemas.
Esta instalação ADO.NET não é necessário fazer em cada máquina - você só precisa incluir o abaixo arquivos em seu projeto e ter Interbase instalado na máquina que está sendo executado. Eu só instalou o driver no meu computador de desenvolvimento.
A instalação irá extrair todos os arquivos necessários que você precisa para colocar em seu aplicativo para se conectar ao banco de dados. Ele também irá criar o readme ADO_NET 2_0 Driver para InterBase XE Instalação e arquivo Instructions.htm Usage. NOTA IMPORTANTE: os exemplos de conexão DB neste arquivo htm ajuda não funcionam 100% do tempo. Veja o meu exemplo de código abaixo para a solução.
Sem conexão ODBC necessário. A lista dos arquivos a serem incluídos no seu projeto .NET e para ser copiado local são:
- Borland.Data.AdoDbxClient.dll
- Borland.Data.DbxCommonDriver.dll
- Borland.Data.DBXInterBaseDriver.dll
- Borland.Delphi.dll
- Borland.VclDbRtl.dll
- Borland.VclRtl.dll
- dbxadapter.dll (x86 ou a versão x64)
- dbxint.dll (x86 ou a versão x64)
- gds32.dll (do interbase DB instalar)
- interbase.msg (do interbase DB instalar)
Eu encontrei duas seqüências de conexão que trabalhou. Para um uso de conexão de corda dois conexão:
connectionstring1 = "DriverName=Interbase;Database=" + database + ";User_Name=" + userid + ";Password=" + password;
connectionstring1 = connectionstring1 + ";SQLDialect=3;MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,";
connectionstring1 = connectionstring1 + "PublicKeyToken=91d62ebb5b0d1b1b;GetDriverFunc=getSQLDriverINTERBASE;LibraryName=dbxint30.dll;VendorLib=GDS32.DLL";
connectionstring2 = “User_Name="+userid+";Password="+password+";Database="+database+";ServerType=0;Charset=NONE;LibraryName=.\\dbxint.dll;VendorLib=GDS32.DLL;GetDriverFunc=getSQLDriverINTERBASE;SQLDialect=3";
GlobalObjects.dbconn = (TAdoDbxConnection)TAdoDbxInterBaseProviderFactory.Instance.CreateConnection();
GlobalObjects.database = databasepath;
GlobalObjects.dbconn.ConnectionString = connectionstring1; //or connectionstring2
GlobalObjects.dbconn.Open();