TAdoDataset - Prepared does not work ?


I converted BDE+Oracle database application to ADO + Oracle (8.1.7). Problem
is that now Oracle prepares query statements every time. In BDE I had
BeforeOpen on TQuery  with something like this:

if not TQuery(Dataset).Prepared then

This prepares every query only first time when it is opened. That was
verifiable on server.
I tried same thing with ADO, but strange thing happens: number of query
prepare calls is double the number of query executions.
Code is very similar to BDE version:

if not TAdoDataset(Dataset).Prepared then
  TAdoDataset(Dataset).Prepared := true;

If TAdoDataset is not prepared, then number of prepare calls on Oracle is
equal to number of executions (same as BDE).

Now questions:

1. What is going on here?

2. Is this "normal" behaviour?

3. How do you prepare ADO queries? (Efficiently of course)

4. Is this Oracle problem? I am using MS OleDB provider, I did not try
Oracle beacuse I read it's buggy.