views:

416

answers:

3

I'm looking at porting an Interbase 6 / Delphi 7 application to embedded Firebird in Delphi 2007. One of the problems we have is getting our users (often quite an unskilled bunch, really - though I love them to bits, naturally) to unblock our applications in their firewall. Windows firewall itself is fairly straightforward but often they are running McAfee or similar (they tend to buy cheap Dells with this stuff pre-installed) and it seems that each and every variation of this stuff has a slightly different user interface. sigh

Still, I'm digressing, sorry. Straight to the point; If my Delphi app connects to an embedded Firebird database, will I still need to all/open something in the user's firewall (as I currently do when installing stuff that makes a connection to 'normal' IB6)?

And if you've read this far (thanks) - can embedded Firebird be used concurrently on a machine? Let's say we have 2 applications, both of which want to use DIFFERENT databases - could the user run both of these apps simultaneously on the same machine or is there some kind of port binding that goes on under the hood, which we'd have to work around?

+3  A: 

Hi,

I have never had a problem with firewalls or McAfee with embedded firebird. (I assume this is because embedded is not really a 'server' and does not require a port to operate)

Yes you can have two apps concurrently, just keep the executables & databases in two different folders.

sujan
Many thanks. I also found this link after I posted my question (typical!) which says much the same: http://docs.huihoo.com/firebird/manual/ufb-cs-embedded.html
robsoft
Sujan - do you mind me asking what component/technique you're using to connect to Firebird?
robsoft
Hi Rob, I am using the standard IB Express components. If you want to uses this, make sure you have generated the gds32.dll wrapper around fbclient.dll.
sujan
+3  A: 

Even using Firebird in a non-embeded install on the local machine we have never bumped into any firewall issues in hundreds of installations. You don't even have to use TCP/IP to connect to the database. We do use TCP/IP, but using the local shared memory protocol would avoid the issue entirely.

Firebird makes an excellent embedded or semi-embedded database. We just install it in it's normal mode and it runs in the background without any user intervention 24x7 for years at a time.

Kevin Gale
Thanks Kevin, appreciate the answer. What do you use to connect to Firebird - FIBPlus? A DBXpress driver? IBO?
robsoft
We have and do use a few diffent methods. We have used ODBC, ADO, IBO, ADO.NET and way in the past BDE. The three methods we have used a lot are IBO, ODBC and ADO.NET. No real problems with any of them. With any of them however make sure you always close any open transactions. Leaving transactions open in Firebird is a killer. (And just about everything you do opens a transaction.)
Kevin Gale
+1  A: 

As the embedded version of Firebird doesn't use TCP/IP to talk to the database, you'll be fine on single user machines. Bear in mind that Firebird Embedded is single-user and you won't be able to get two apps talking concurrently to the same database. To do that you'd need to install the Firebird server on the machine and in the connection string use localhost:C:\Data\MyDB.FDB on both apps.

I use UIB to talk to Firebird (I wrote a persistence layer for the OPF I use using it), it's thread-safe (unlike IBX) and I've found it to be appreciably faster than IBX. There's a version that comes with JVCL and a slightly later version at http://www.progdigy.com

Andy_D
Thanks Andy - and thanks for the link to the UIB stuff - that looks very interesting!
robsoft