473,386 Members | 1,841 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

DBexpress with DB2 questions

Hello,

We are devoting thousands of man hours doing what many of you have
had to do - covert tons of code from BDE to dbexpress(d7). After a
month,
we have all of our apps compiling and working pretty well with
Interbase.

Now the real work begins - getting them all to work with Oracle,
MSSQL and DB2.

I dove in personally with DB2. After a dozen glaring "what the hells"
and work arounds the real problems have become clearer.

Here are a couple of the most perplexing - I hope someone out there
has some db2 experience to share.

First and formost, each connection seems to maintain a hidden,
overriding transaction.

Using a single connection within an app we may have hundreds of
selects, updates and inserts performed. Some of those are grouped into
manual transactions, most are not.

But if you simply make a db2 connection, perform normal sql updates (no
manual transaction used) then stop the app (stop in the IDE or
crash/exception occurs) several odd things happen.

For a good minute afterwards you can connect to the db, but any tables
that you previously made changes to are clearly locked - no access is
available.
After the minute has passed, all the changes are rolled back and those
tables are unlocked.

I would rather have behavier more like with the other DBs - each sql
should be performed in a single-statement implicit transaction - in
a sense be "autocommitted".
This is for two reasons, one , so it works like other dbs,
and two, so that a crash won't horribly lose and corrupt the data.

We have settled on using "cursor stability" for the db and
"dirty read" for our dbexpress connection. Anything else just hangs
at every turn.

Two other things of note that seem different when connected to
db2 using dbexpress:
Often there is no exception when executing a bad sql statement.
This negates our exception handling.
Also, as you may know, you cannot manually start a transaction when
any datasets are open using the same connection. This may not sound
important, but when you have millions of lines written that did not
have to adhere to this requirement, the implications are onerous.

Any workarounds or suggestions will be used and appreciated,
thanks
tonyM

Nov 12 '05 #1
3 2069
to*********@adelphia.net wrote:
Any workarounds or suggestions will be used and appreciated,

Maybe explain what DBExpress is to begin with. It appears like a lot of
your problems are situated in the client.
From all I read the DB2 server is operating exactly as it should when
abused...

Cheers
Serge
--
Serge Rielau
DB2 SQL Compiler Development
IBM Toronto Lab
Nov 12 '05 #2
Hi Tony,
I dove in personally with DB2. After a dozen glaring "what the hells"
and work arounds the real problems have become clearer.

Here are a couple of the most perplexing - I hope someone out there
has some db2 experience to share.
I've written a few dozen articles about Delphi and DB2, including a
dozen using dbExpress. See articles #1..#10, 15, #16, #28 and #29 on
http://www.drbob42.com/IBM for example.
tonyM


Groetjes,
Bob Swart (aka Dr.Bob - www.DrBob42.com)

--
Bob Swart Training & Consultancy (eBob42) - Borland Technology Partner
Delphi 2005 PDF manuals available from http://www.drbob42.com/training
Nov 12 '05 #3
If you want to use your application work with many databases don't use
BDE or dbExpress connection. There is a component pack I use for native
database connection. It supports many different databases (Oracle,
MSSQL, PostgreSQL, MySQL, Firebird, Interbase, DB2, Sybase and others)

It is called SQL Direct.
www.sqldirect-soft.com

If you are working with many databases I can also advise you nice
program for cross database management.

It is called dbDeveloper
www.dbdeveloper.prominentus.com
This is really professional database edition/admin tool that will help
you to save lots of work hours.

Nov 12 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Heikki Tuuri | last post by:
Hi! Many people have complained over years that Borland's dbExpress driver does not work with MySQL and transactions, because it disconnects from mysqld after each SQL statement. The postings...
0
by: Simon Hodgson | last post by:
I've been playing with the Borland dbExpress Drivers, and it would appear that Borland only have beta drivers for MySQL 4.x.x However it would also appear to be possible to access a MySQL v 4.x.x...
2
by: Jon | last post by:
Since there is no native support for 64bit integers in dbExpress, it is not trivial to fetch a BIGINT from SQL 2k. If it is possible, how can a BIGINT be fetched using TParam or TField? Any...
0
by: softwareengineer2006 | last post by:
All Interview Questions And Answers 10000 Interview Questions And Answers(C,C++,JAVA,DOTNET,Oracle,SAP) I have listed over 10000 interview questions asked in interview/placement test papers for...
0
by: connectrajesh | last post by:
INTERVIEWINFO.NET http://www.interviewinfo.net FREE WEB SITE AND SERVICE FOR JOB SEEKERS /FRESH GRADUATES NO ADVERTISEMENT
2
by: freepdfforjobs | last post by:
Full eBook with 4000 C#, JAVA,.NET and SQL Server Interview questions http://www.questpond.com/SampleInterviewQuestionBook.zip Download the JAVA , .NET and SQL Server interview sheet and rate...
4
by: Drew | last post by:
I posted this to the asp.db group, but it doesn't look like there is much activity on there, also I noticed that there are a bunch of posts on here pertaining to database and asp. Sorry for...
8
by: Krypto | last post by:
Hi, I have used Python for a couple of projects last year and I found it extremely useful. I could write two middle size projects in 2-3 months (part time). Right now I am a bit rusty and trying...
0
by: ramu | last post by:
C# Interview Questions and Answers8 http://allinterviewsbooks.blogspot.com/2008/07/c-interview-questions-and-answers8.html C# Interview Questions and Answers7...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.