Difference between revisions of "Talk:Lazarus Database Overview"

From Lazarus wiki
Jump to navigationJump to search
(removed obsolete stuff. If you want to update the code samples on the wiki, don't ask to do it, just do it ;))
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
 
Whatever remains will be perhaps a list of supported databases which can be merged with similar lists for FPC...
 
Whatever remains will be perhaps a list of supported databases which can be merged with similar lists for FPC...
 
--[[User:BigChimp|BigChimp]] 06:26, 22 May 2012 (UTC)
 
--[[User:BigChimp|BigChimp]] 06:26, 22 May 2012 (UTC)
 
=== Suggestions from 2005 - can these be removed? ===
 
Is this still relevant or does this need to be removed?
 
--[[User:BigChimp|BigChimp]] 11:21, 8 August 2011 (CEST)
 
 
Hi,
 
 
I would like to change some code given in the MySQL example for Lazarus. I think there are some fundamental errors here.
 
For instance
 
 
procedure ShowString (S : string);
 
(* display a string in a Memo box *)
 
begin
 
        trymysqlForm1.ResultsMemo.Lines.Add (S)
 
end;
 
 
should be done in a methode of the form like:
 
 
procedure TtrymysqlForm1.ShowString (S : string);
 
(* display a string in a Memo box *)
 
begin
 
        ResultsMemo.Lines.Add (S)
 
end;
 
 
It makes the use of the trymysqlForm1 variable obsolete, which might be the cause of runtime errors.
 
Well to cut a long story short, I would like the code to be changed into:
 
 
procedure TFormTryMySQL.QueryButtonClick(Sender: TObject);
 
var
 
  tableBuffer: PMYSQL_RES;
 
  recordBuffer: TMYSQL_ROW;
 
  fieldList: TStringList;
 
  I: Integer;
 
  stMessage: String;
 
begin
 
  // Show how we can get records from a table
 
  StatusBar1.SimpleText := 'Executing query: ' + CommandEdit.Text;
 
  ShowString('Executing query: ' + CommandEdit.Text);
 
  if (mysql_query(mySQLSock, PChar(CommandEdit.Text)) < 0) then begin
 
    ShowString('Query failed '+ StrPas(mysql_error(mySQLSock)));
 
  end else begin
 
    tableBuffer := mysql_store_result(mySQLSock);
 
    try
 
      if tableBuffer = nil then begin
 
        ShowString('Query didnot return any results.');
 
      end else begin
 
        fieldList := TStringList.Create;
 
        try
 
          ShowString('Number of records returned  : ' + IntToStr(mysql_num_rows(tableBuffer)));
 
          ShowString('Number of fields per record : ' + IntToStr(mysql_num_fields(tableBuffer)));
 
          // Lets get a list a returned fields.
 
          for I := 0 to pred(mysql_num_fields(tableBuffer)) do begin
 
            fieldList.Add(mysql_fetch_field_direct(tableBuffer, I).name);
 
          end;
 
          recordBuffer := mysql_fetch_row(tableBuffer);
 
          while (recordBuffer <> nil) do begin
 
            stMessage := '';
 
            for I := 0 to pred(mysql_num_fields(tableBuffer)) do begin
 
              stMessage := stMessage + fieldList[I] + ': ' + recordBuffer[I] + ', ';
 
            end;
 
            Delete(stMessage, Length(stMessage) - 2, 2);
 
            ShowString(stMessage);
 
            recordBuffer := mysql_fetch_row(tableBuffer);
 
          end;
 
        finally
 
          fieldList.Free;
 
        end;
 
      end;
 
    finally
 
      // Free the results, thus saving resources.
 
      mysql_free_result(tableBuffer);
 
    end;
 
  end;
 
end;
 
 
There are some more changes, in fact I expanded it with a second form to show data in a ListView. So if there is any interest in that I'm willing to [http://prdownloads.sourceforge.net/lazarus-ccr/trymysql20050404.tar.gz?download contribute] it to the documentation project.
 
 
[[user:Matthijs|Matthijs]]
 
 
This page has been converted from the epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusDatabase version].
 
------
 

Latest revision as of 12:51, 8 May 2014

Splitting up so more organized?

This page used to be a tutorial but has changed to become an overview page of various databases and access mechanisms. I propose moving the database specific part out to their own pages (e.g. MySQL) and moving general SQLDB tutorials (e.g. the mysql code-driven example) to a new SQLDB tutorial page, but stripped of db specifics as far as possible (see SQLDB Tutorial1 for an example).

Whatever remains will be perhaps a list of supported databases which can be merged with similar lists for FPC... --BigChimp 06:26, 22 May 2012 (UTC)