Hi all,

hi there

i've got a problem while reading a huge database table with TSQLQuery. The
program consumes all the memory and is then terminated by the kernel. I think
all read table rows are buffered. Is there a way to disable or limit the size
of the buffer?

Example:
  FQuery.SQL.Add('select * from TEST');
  FQuery.Open;
  while not FQuery.EOF do begin
    s := FQuery.Fields[0].AsString;
    Inc(Count);
    FQuery.Next;
  end;
  FQuery.Close;

doing a "select *" query is usually a bad idea for exactly the reason
that you are describing.  the whole point of sql is to limit the
amount of data transferred between client and server and to try and do
the computations on the server side, if possible.

what is it exactly that you want to accomplish?  if you really need to
get all the data, you'll probably have to use something like this:

select * from test
where index_field > last_fetched_index
limit 100

storing last_fetched_index every time.

henry
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to