We are migrating from Delphi 6 to Delphi 2010,earlier we were using BDE engine to connect to Sybase Database from Delphi 6. We found out that Delphi 2010 does not support BDE.
We are trying with dbexpress but we are not able to catch the exception(raise error) thrown by Sybase.
Could you please let me know if there is any other driver except dbexpress to connect to Sybase Database from Delphi 2010.
Thanks.
Regards,
AS
You can use AnyDAC to connect to:
Sybase SQL Anywhere (AnyDAC native driver)
Sybase Adaptive Server (AnyDAC ODBC bridge).
I suspect your real problem is that you have the Professional version of Delphi rather than Enterprise. As far as I know, BDE can still be used with Delphi 2010.
With Delphi 6 the Professional version allowed connections to remote databases. Somewhere between Delphi 6 and Delphi 2010 that policy was changed.
Anyway, you really need to give up on BDE and move forward.
Edit: (jeroen)
The BDE for relational access (aka the BDE SQL Links technology) has been deprecated since 2002, about 2 years after the introduction of dbExpress in Kylix and Delphi 6.
You could try a workaround:
Install Delphi 6
Update BDE to the latest available version (there should be some updates on Embarcadero site, I hope)
Install Delphi 2010
IIRC the available SQL Links should not be removed (otherwise it would break the older version), and they should still work in Delphi 2010. But that's really a stopgap try.
Devart's UniDac can connect to Sybase without using dbExpress, but I never used it.
Sybase drivers for dbExpress is included in Enterprise version of Delphi. If that is not an option you can use dbGO (ADO) that is included in Professional.
You can try ZEOSLIB which contains SyBase connectivity, along with many other SQL dbs.
As far as I can see, it requires you to remove your Query/Table objects and replace them with its own Table and Query replacement objects, but then, so would moving from BDE to ADO/dbGo or dBExpress.
And you really should get the BDE out of your application. It's dead as a doornail.
Related
Currently I have an old Delphi project using BDE to connect to Paradox.
We want to investigate whether ADO can be used to replace the BDE but still use Paradox for Delphi version 10.2 Tokyo.
So please advise me that Delphi 10.2 supports Paradox Database? If so please give advice on replacing the BDE to ADO?
Thanks & Best regard
A Microsoft ODBC driver for Paradox databases comes with Windows, so you can certainly connect to Paradox tables using ADO and ODBC. See the 32- and 64-bit ODBC administration apps under Control Panel | Administrative Tools, and in particular its Drivers tab.
To create a simple Paradox + ADO app:
Use Windows' ODBC wizard to create a system- or file-DSN that uses the MS ODBC Driver for ODBC to connect to the Paradox table.
In your Delphi app, use a TAdoConnection to use e.g. the OLE DB provider for ODBC to use the DSN and a TAdoQuery to do a SELECT * from the P'Dox table.
See my answer here
BDE to ADO conversion in DELPHI 5
for a way of converting from BDE to ADO to access Paradox tables. Btw, once you have access to your Paradox data via ADO, it is straightforward to replace Paradox with a proper, robust RDBMS.
Recent versions of Dephi, including Tokyo, come with a very capable alternative DB-access library called FireDAC, but:
It has a much steeper learning curve than ADO.
Its author no longer works for Embarcadero, so with their numerous other lay-offs, FireDAC may become an "evolutionary dead-end."
Being from Embarcadero, it does not have the "safety in numbers" that comes with using MS's tried and tested ADO.
I am currently using BDE components to connect to a database in Delphi 5 professional version. My problem is that BDE components need BDE Administator to run the application on another machine. So I am planning to buy a new version of Delphi which contains ADO components.
Question: Are ADO components also having issues like the BDE? Do ADO components need any specific setup to run applications on another machine?
Thanks for the help.
All the components have issues in some point, in the case of ADO is very stable, but you can have some specific problems with the providers (like the infamous not support for blob fields in ORACLE using the Microsoft provider) but certainly is more recommendable use ADO instead of the deprecated BDE. About the dependencies, ADO uses providers to connect to the RDBMS, most of them are installed by MDAC (Microsoft Data Access Components) which is included in most of the Windows versions. So in most cases you will not need install any addtional component, at least which you want use a provider not inluded in MDAC like MySql, Firebird or others.
Sounds like if you posted two times the (almost) same question... with more focus on ADO this time.
As was written in the previous question, if you attempt to connect to an Oracle database using ADO or OleDB, you'll find out that all OleDB providers are buggy for handling Oracle BLOBs: Microsoft's version just do not handle them, and Oracle's version will randomly return null for 1/4 of rows... So IMHO ADO or OleDB are not a serious option for accessing Oracle database. :(
And if your purpose is to get rid of the BDE installation, you'll find out that the Oracle's OleDB provider is quite huge and that the BDE is much light and better... A standard Oracle's client installation containing the OleDB/ADO provider (which is not installed in the "Light" version of the Oracle's clients), needs a .zip setup of about 660 MB...
On real database data, I found out our Open Source direct access to Oracle to be 2 to 10 times faster than the OleDB provider, without the need to install this provider (nor the BDE). You can even use the Oracle Instant Client provided by Oracle which allows you to run your applications without installing the standard (huge) Oracle client or having an ORACLE_HOME. Just deliver the dll files in the same directory than your application, and it will work.
Of course, this is full Open Source, and works from Delphi 5 up to XE. So when your project may upgrade to a newer Delphi version, it will work. You are not tied to non-Unicode Delphi 5-Delphi 7 version of Oracle components, as you can found on Torry's, e.g. but those components may help you get rid of the BDE installation for an existing project.
If you don't use BLOBs in your database, you can use ADO. In this case, my advice is to read this post, and use TADODataset, which is available in Delphi 5.
Ok Naren, since you are on Oracle you can use this Oracle driver DOA. We use it exclusively in our Delphi projects.
All our Delphi projects are on Delphi 7 but we are converting all of it to Delphi XE now. When using DOA you do need to install the Oracle client libraries on the client machine. The upside is speed and Oracle support, so the DOA drivers don't need to work on the most common command set like ADO needs to, so the Oracle support is brilliant.
We are migrating a pretty big application crafted in Delphi 5 (still getting customers using this old versions) that uses BDE to connect to a SQL Server. The decided path to migrating is first Delphi 5 to Delphi 2010, then BDE to dbExpress (or dbGO, still undecided).
The problem is that BDE in Delphi 2010 doen't seems to have SERVER NAME parameter! (the one you need to set the host to connect to) and it neither seems to have a replace for that.
I've tried to force it in the strings of parameters unsuccesfuly. I still can not believe this, but maybe I'm missing something bad.
BDE support for SQL Links was removed from the BDE. SQL Server in the BDE was using SQL Links.
The announcement was made in 2002 in this article:
http://edn.embarcadero.com/article/28688
If you copy the old BDE files over the new ones in Program Files\Common files\Borland shared\BDE, you will have access again to SQL servers through BDE. I have done a quick test, and could access my Firebird 2.1 in Delphi 2010 IDE without problem. I still will have to test my application, which was Delphi 6. So I can't give a final conclusion, but it looks OK. If it is wise to continue with BDE maybe questionnable, but at least basically it still works.
I have an older application (written in Delphi 6) that has to be ported to Delphi 2006 (update 2). The application used to connect to an Interbase 6.x database using DBExpress, but the new version needs to connect to a Firebird 2.x Superserver.
Porting went OK, no real problems. But now, when I try to connect to the new Firebird server from the ported app, I get the following error:
Database error
Database Server Error: no current record for fetch operation
Running the same application compiled with Delphi 6, talking to the same Firebird server runs fine. The changes needed to compile the app in Delphi 2006 weren't related to the database code - all local library stuff. The application uses TSQLDataset en datasetproviders and clientdatasets.
Anybody has any idea how or why? Any changes to DBExpress that might cause this behaviour?
Thanks.
I don't think Delphi 2006 supports Firebird natively. Think you need to install FIBPlus
Heres a list of what is supported in Delphi 2006:
Old driver New driver Database and Version
dbexpinf.dll dbxinf30.dll Interbase 7.5
dbexpora.dll dbxora30.dll Oracle 10g
dbexpdb2.dll dbxdb230.dll db2 UDB 8.x
dbexpmss.dll dbxmss30.dll MSSQL 2000
dbexpmys.dll dbxmys30.dll MySQL 4.0.24
dbexpasa.dll dbxasa30.dll Adaptive Sybase Anywhere 9
dbexpase.dll dbxase30.dll Sybase 12.5
dbexpinf.dll dbxinf30.dll Informix 9.x
Extracted from Here
Until Delphi 2010, the built in DBExpress drivers officially never supported FireBird.
In practice, a lot of combinations never worked at all.
Either:
go for a DBExpress driver officially supporting FireBird (search google),
or move to another database middle layer (FIBPlus that James suggests is really good).
--jeroen
First of all, retry the same steps from a new, 1-form app (put SQLConnection, SQLQuery etc etc), fill with the SQL you want and try to connect.
I believe there's some connection parameter that changed between versions, since I've used D2006 DBexpress to access Firebird 2.x with success. But the application were not ported, but new projects.
I just upgraded my BDS2006 Prof to D2010 Prof. I usually use Interbase component (TIBDatabase, etc) to connect with the database. I am thinking about other alternative components. Sadly, Zeos component (6.X) currently still not working with D2009/D2010. DBExpress support FB connection but not in Prof. Version (only in Enterprise/Architect).
What component(s) you suggest for me? (I prefer a free good component, but it is okay if it is a very good, stable, robust, not so expensive and well supported commercial product).
You can also use :
UIB (free)
IBDAC
AnyDAC
The best library for Delphi-Firebird interaction is FIBPlus. But it is quite expensive - $348 per one license
There is also a free dbExpress driver for FireBird which can be used in Delphi 2010 Pro.
You can try IBProvider (OLE DB Firebird driver and Interbase provider), This very well documented, updated (last version 13-08-2009) and has great support.
The access to Firebird from Delphi using this provider, you may choose among the following variants:
Interact with ADO via COM interfaces.
Use dbGo (ADO Express) components.
Supports the following versions of firebird
Firebird 1.0 (1.0.3)
Firebird 1.5 (1.5.3, 1.5.4, 1.5.5)
Firebird 2.0 (2.0.1 - 2.0.x)
Firebird 2.1
Firebird 2.5
Firebird 64 bits
Bye.
Another free option is to use the free ODBC driver and the dbGo components. I use them and they work pretty well.
Firebird ODBC Driver