Best way to connect to Interbase 7.1 using .NET C#

后端 未结 4 833
长发绾君心
长发绾君心 2021-01-13 10:18

Could someone please explain the best way to connect to an Interbase 7.1 database using .NET/C#?

The application will be installed on many end user computers so the

4条回答
  •  别那么骄傲
    2021-01-13 10:47

    The code in the help file works in many situations but not all, especially on Windows 8.1, Windows Server 2012 machines.

    Make sure you get the latest InterBase_ADO.NET from embarcadero. The version I updated to was version 16.0.4327.44959 of Borland.Data.AdoDbxClient.dll. (Right click on file, properties, details to see version number). The install also creates a x64 version folder for 64bit even though I did not use it. I targeted x86 with no issues.

    This ADO.NET install is not necessary to do on every machine – you just need to include the below files in your project and have Interbase installed on the machine you are running on. I only installed the driver on my development computer.

    The install will extract all the necessary files you need to put in you application to connect to the database. It will also create the readme ADO_NET 2_0 Driver for InterBase XE Installation and Usage Instructions.htm file. IMPORTANT NOTE: the DB connection examples in this help htm file do not work 100% of the time. See my code example below for the solution.

    No ODBC connection necessary. The list of the files to be included in your .NET project and to be copied local are:

    • Borland.Data.AdoDbxClient.dll
    • Borland.Data.DbxCommonDriver.dll
    • Borland.Data.DBXInterBaseDriver.dll
    • Borland.Delphi.dll
    • Borland.VclDbRtl.dll
    • Borland.VclRtl.dll
    • dbxadapter.dll (x86 or x64 version)
    • dbxint.dll (x86 or x64 version)
    • gds32.dll (from the interbase DB install)
    • interbase.msg (from the interbase DB install)

    I found two connection strings that worked. To connect use one of two connection string:

    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();
    

提交回复
热议问题