Difference between revisions of "Talk:Lazarus Database Overview"

From Lazarus wiki
Jump to navigationJump to search
m
(removed obsolete stuff. If you want to update the code samples on the wiki, don't ask to do it, just do it ;))
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Hi,
+
=== 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).
  
I would like to change some code given in the MySQL example for Lazarus. I think there are some fundamental errors here.
+
Whatever remains will be perhaps a list of supported databases which can be merged with similar lists for FPC...
For instance
+
--[[User:BigChimp|BigChimp]] 06:26, 22 May 2012 (UTC)
 
 
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)