Access violation when BLOB field

Discussion of open issues, suggestions and bugs regarding usage of dbExpress drivers for Oracle in Delphi and C++Builder
Post Reply
ReinhardOstermeier
Posts: 5
Joined: Thu 23 Oct 2008 12:29

Access violation when BLOB field

Post by ReinhardOstermeier » Wed 07 Jan 2009 16:28

Hi,
Everytime when I insert an entry with a blob field I get the Exception:
"Access violation at address 03176F23 in module 'dbexpoda40.dll'. Read of address 00000000"
The address is not fix, it depends on where the TSQLQuery.ExecSQL command is in my code.

Here is a code example:

Code: Select all

procedure TRemote.Button1Click(Sender: TObject);
var
  query : TSQLQuery;
begin
  query := TSQLQuery.Create(nil);

  query.SQLConnection := Paramserver.ServerDM.DB;
  Paramserver.ServerDM.DBConnect;

  query.SQL.Add('INSERT INTO blobtest');
  query.SQL.Add('(ID, blb) ');
  query.SQL.Add('VALUES(1, empty_blob()) ');
  query.SQL.Add('Returning blb INTO :blbdata');

  query.ParamByName('blbdata').ParamType := ptInput;
  query.ParamByName('blbdata').DataType := ftOraBlob;
  query.ParamByName('blbdata').LoadFromFile('E:\projekte\ascot\muc\sitzd09\tempcopie\ascot.ini', ftOraBlob);

  try
    query.ExecSQL();
  except
    on ex : Exception do
    begin
      MessageDlg(ex.Message, mtError, [mbOK], 0);
    end;
  end;
  query.Free();
end;
The funny thing is, that the entry is in the database and the blob field is correct. When I read the entry and write the blob to file again, then the data is ok.

Here are my connection params:

Code: Select all

DriverName=DevartOracle
GetDriverFunc=getSQLDriverORA
LibraryName=dbexpoda40.dll
VendorLib=oci.dll
Oracle TransIsolation=ReadCommited
BlobSize=-1
ErrorResourceFile=
LocaleCode=0000
Params are set at runtime

Oracle Server is 10.2.0.1.0 on WinXP Pro
Oracle Client is 10.2.0
dbexpoda40.dll 4.40.0.13
Delphi 2009 with Update 1 + 2 + Help 1
OS WinXP Pro SP3

The same code works with Delphi 7 and dbexpoda.dll 3.x

Would be nice if anyone could help me.

Regards,
Reinhard.

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Fri 09 Jan 2009 09:31

We have fixed this problem. The fix will be included in the next build of DbxOda.

ReinhardOstermeier
Posts: 5
Joined: Thu 23 Oct 2008 12:29

Post by ReinhardOstermeier » Fri 09 Jan 2009 13:26

Is it safe to ignore the Access violation? or does it make any memory leaks or something like it?
And, can you tell me for when the next build is shedulled?
Thank you,
Reinhard.

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Mon 12 Jan 2009 08:40

The access violation occurs on committing the statement. If you ignore this access violation the changes are not committed until you execute the next statement or close the connection.

We are planning to release the next build of DbxOda this week.

pnsozko
Posts: 1
Joined: Tue 11 Oct 2011 19:31

Post by pnsozko » Tue 11 Oct 2011 19:49

when I run a qry that contains a type field interval, gives an error saying "Exception in module EAssertionFailed dbexpoda.dll at 00096F13". is very similar to the former. Is there any update to solve it?

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Fri 14 Oct 2011 10:38

Hello,

Unfortunately, at the moment our dbExpress driver for Oracle does not support the Interval data types.
Support for these types may be added in the future.

Post Reply