Difference between revisions of "Talk:Lazarus Database Overview"

From Free Pascal wiki
Jump to navigationJump to search
m
(Suggestions for page cleanup 0- mainly dbf & mysql)
Line 1: Line 1:
 +
=== Splitting up so more organized? ===
 +
3 points:
 +
* I suggest we move the Dbf information out of this article and merge it with the tutorial; this will get all information in one spot.
 +
* To cut down on the page length and make it clearer, we could rename the page to Lazarus Database Tutorials and move the MySQL tutorial (and any others directly in this page) to separate pages. This will allow the reader to quickly see what tutorials for what databases are available.
 +
* If the second point is done, we could write some supporting documentation on what a database is, what a dataset is, etc, and link to it on top of this page. I've started with datatype information.
 +
 +
=== 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,
 
Hi,
  

Revision as of 10:21, 8 August 2011

Splitting up so more organized?

3 points:

  • I suggest we move the Dbf information out of this article and merge it with the tutorial; this will get all information in one spot.
  • To cut down on the page length and make it clearer, we could rename the page to Lazarus Database Tutorials and move the MySQL tutorial (and any others directly in this page) to separate pages. This will allow the reader to quickly see what tutorials for what databases are available.
  • If the second point is done, we could write some supporting documentation on what a database is, what a dataset is, etc, and link to it on top of this page. I've started with datatype information.

Suggestions from 2005 - can these be removed?

Is this still relevant or does this need to be removed? --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 contribute it to the documentation project.

Matthijs

This page has been converted from the epikwiki version.