Thema: RTF in MySQL

Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: RTF in MySQL

  Alt 27. Mär 2012, 11:15
Oh shit....

was Ihr mich da fragt weiß ich alles nicht

Ich weiß nicht, ob das hilft, aber das ist der Code, den ich verwende, um mit dem MySQL-Server zu kommunizieren...
Ich verwende die mysql.pas und die libmySQL.dll.

Delphi-Quellcode:
procedure TWorkshopFrame.Button1Click(Sender: TObject);
var query: string;
    Cols: TCols;
    Rows: TRows;
begin
  query:='insert into plants (Name) '+
         'values('+LOMUnit.RichText(RichEdit1)+')';
  LOMUnit.Connect;
  LOMUnit.ExecQuery(DB, query, Cols, Rows);
  LOMUnit.Disconnect;
Die Connect-Procedure
Delphi-Quellcode:
procedure connect;
var
  MYSQL_ROW: PMYSQL_ROW;
  Datei: TextFile;
  MyString: String;
begin
  libmysql_fast_load(nil);
  AssignFile(Datei, ExtractFilePath(Application.ExeName) + 'SQL.set');
  Reset(Datei);
  try
    ReadLn(Datei, MyString);
    host := copy(MyString, pos(':', MyString)+1, length(MyString));
    ReadLn(Datei, MyString);
    User := copy(MyString, pos(':', MyString)+1, length(MyString));
    ReadLn(Datei, MyString);
    Pass := copy(MyString, pos(':', MyString)+1, length(MyString));
    ReadLn(Datei, MyString);
    DB := copy(MyString, pos(':', MyString)+1, length(MyString));
  finally
    CloseFile(Datei);
  end;
  mySQL_Res := nil;
  if LibHandle<>nil
  then begin
    mysql_close(LibHandle);
    LibHandle := nil;
  end;
  LibHandle := mysql_init(nil);
  if LibHandle=nil
  then
    raise Exception.Create('mysql_init failed');
  if (mysql_real_connect(LibHandle,
                         PAnsiChar(AnsiString(Host)),
                         PAnsiChar(AnsiString(User)),
                         PAnsiChar(AnsiString(Pass)),
                         PAnsiChar(AnsiString(DB)),
                         3306, nil, 0)=nil)
  then
    raise Exception.Create(mysql_error(LibHandle));
end;
Die ausführende Procedure
Delphi-Quellcode:
function ExecQuery(const Datenbank, query: Ansistring; var Cols: TCols;
                   var Rows: TRows): Boolean;
var
  j, i, field_count, row_count: Integer;
  mySQL_Field: PMYSQL_FIELD;
  tablename: String;
  MYSQL_ROW: PMYSQL_ROW;
begin
   SetLength(Cols, 0);
   // Datenbank auswählen
   ErrorCode := mysql_select_db(LibHandle, PAnsiChar(AnsiString(Datenbank)));
   if ErrorCode = 0 then
   begin
     // Query ausführen
   if mysql_real_query(LibHandle, PAnsiChar(query), Length(query))<>0
    then begin
      raise Exception.Create(mysql_error(LibHandle));
      exit;
     end
     else
     begin
       // Query speichern
       mySQL_Res := mysql_store_result(LibHandle);
       if mySQL_Res<>nil
       then begin
         // zurückgelieferte Anzahl der Spalten
         ColCount := mysql_num_fields(mySQL_Res);
         SetLength(Cols, ColCount);
         SetLength(Rows, ColCount, 0);
         SetLength(Cols, ColCount);
         // Spalten-Array füllen
         for i := 0 to ColCount - 1 do
         begin
           mySQL_Field := mysql_fetch_field_direct(mySQL_Res, i);
           Cols[i] := mysql_field_name(mySQL_Field);
         end;
         // Anzahl der betroffenen Zeilen ermitteln
         AffectedRows := mysql_num_rows(mySQL_Res);
         SetLength(Rows, ColCount, AffectedRows);
         // neu ->
         // Zeilen-array füllen
         // alle Zeilen ...
         for j := 0 to AffectedRows - 1 do
         begin
           // ... werden eingelesen
           MySQL_Row := mysql_fetch_row(mySQL_Res);
           // alle Spalten ...
           for i := 0 to ColCount - 1 do
           begin
             // ... werden in Rows[] übertragen
             Rows[i, j] := MySQL_Row[i];

           end;
         end;
         // gespeicherte Abfrage wieder freigeben
         mysql_free_result(MySQL_Res);
       end
     end
   end;
   result := ErrorCode = 0;
end;
Disconnect
Delphi-Quellcode:
procedure disconnect;
begin
  mysql_close(LibHandle);
  LibHandle := nil;
  mySQL_Res := nil;
  libmysql_free;
end;
Delphi xe2 starter...

Vielen Dank für die Unterstützung

Ykcim
Patrick
  Mit Zitat antworten Zitat