|
|
(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].
| |
− | ------
| |