![]() |
Datenbank: MySQL • Version: 5.0.51b • Zugriff über: eigene php DB editor script
MySQL Daten Bank Editor
Liste der Anhänge anzeigen (Anzahl: 1)
Hi ich will einen Datenbank editor erstellen habe es auch fast geschaft und weiter weiß ich leider nicht mehr.
Bin noch Änfänger sprich lerne es erst seit 1 Jahr // Mann kann sich einloggen // Mann Findet alle informationen bzw alle sql einträge so jetzt zu meinem Problem ich will damit auch die Datenbank bearbeiten können. Was mir noch fehlt und wo ich hilfe brauche : // Edior Feld für beide Tabellen // Logout Button // Ein Button um eine tabelle zu einzufügen Wär für hilfe sehr dankbar Der Quellcode
Delphi-Quellcode:
hier auch die beta version zum Downloaden im Anhang
unit dbeditor;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, ExtCtrls, mysql, sEdit, sButton, sSkinManager, sLabel; type TForm1 = class(TForm) Bevel1: TBevel; DatabaseListBox: TListBox; TableListBox: TListBox; TableStringGrid: TStringGrid; FieldListGrid: TStringGrid; sSkinManager1: TsSkinManager; LoginButton: TsButton; PasswordEdit: TsEdit; UserEdit: TsEdit; HostEdit: TsEdit; sLabelFX1: TsLabelFX; sLabelFX2: TsLabelFX; sLabelFX3: TsLabelFX; sLabelFX4: TsLabelFX; sLabelFX5: TsLabelFX; sLabelFX7: TsLabelFX; sLabelFX8: TsLabelFX; sLabelFX9: TsLabelFX; sLabelFX10: TsLabelFX; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure DatabaseListBoxClick(Sender: TObject); procedure TableListBoxClick(Sender: TObject); procedure LoginButtonClick(Sender: TObject); private LibHandle: PMYSQL; ConHandle: PMYSQL; function DoQuote(const s: String): String; public end; var Form1: TForm1; implementation {$R *.dfm} procedure ClearGrid(Grid: TStringGrid); var row, col: Integer; begin for row := 1 to Grid.RowCount - 1 do for col := 0 to Grid.ColCount - 1 do Grid.Cells[col, row] := ''; end; procedure TForm1.DatabaseListBoxClick(Sender: TObject); var MyResult: Integer; mySQL_Res: PMYSQL_RES; MYSQL_ROW: PMYSQL_ROW; begin TableListBox.Items.Clear; ClearGrid(FieldListGrid); TableListBox.Enabled := False; with DatabaseListBox do MyResult := mysql_select_db(ConHandle, PAnsiChar(Items[ItemIndex])); if MyResult<>0 then raise Exception.Create(mysql_error(ConHandle)); mySQL_Res := mysql_list_tables(ConHandle, nil); if mySQL_Res=nil then raise Exception.Create(mysql_error(ConHandle)); try repeat MYSQL_ROW := mysql_fetch_row(mySQL_Res); if MYSQL_ROW<>nil then begin TableListBox.Items.Add(MYSQL_ROW^[0]); end; until MYSQL_ROW=nil; finally mysql_free_result(mySQL_Res); end; if TableListBox.Items.Count>0 then begin TableListBox.Enabled := True; end; end; function TForm1.DoQuote(const s: String): String; begin SetLength(Result, Length(s)*2+1); SetLength(Result, mysql_real_escape_string(ConHandle, Pointer(Result), PChar(s), Length(s))); Result := '`' + Result + '`'; end; procedure TForm1.FormCreate(Sender: TObject); begin libmysql_fast_load(nil); LibHandle := mysql_init(nil); FieldListGrid.Cells[0, 0] := 'Name'; FieldListGrid.Cells[1, 0] := 'Type'; FieldListGrid.Cells[2, 0] := 'Len'; FieldListGrid.Cells[3, 0] := 'Flags'; end; procedure TForm1.FormDestroy(Sender: TObject); begin mysql_close(LibHandle); libmysql_free; end; procedure TForm1.LoginButtonClick(Sender: TObject); var mySQL_Res: PMYSQL_RES; MYSQL_ROW: PMYSQL_ROW; begin DatabaseListBox.Items.Clear; DatabaseListBox.Enabled := False; ConHandle := mysql_real_connect(LibHandle, PAnsiChar(HostEdit.Text), PAnsiChar(UserEdit.Text), PAnsiChar(PasswordEdit.Text), nil, 0, nil, 0); if ConHandle=nil then raise Exception.Create(mysql_error(LibHandle)); Caption := HostEdit.Text + ' ' + mysql_get_server_info(ConHandle); mySQL_Res := mysql_list_dbs(ConHandle, nil); if mySQL_Res=nil then raise Exception.Create(mysql_error(ConHandle)); try repeat MYSQL_ROW := mysql_fetch_row(mySQL_Res); if MYSQL_ROW<>nil then begin DatabaseListBox.Items.Add(MYSQL_ROW^[0]); end; until MYSQL_ROW=nil; finally mysql_free_result(mySQL_Res); end; if DatabaseListBox.Items.Count>0 then begin LoginButton.Enabled := False; DatabaseListBox.Enabled := True; end; end; function GetFieldTypeString(mySQL_Field: PMYSQL_FIELD): String; const FieldtypeString1: array [MYSQL_TYPE_DECIMAL..MYSQL_TYPE_BIT] of String=( 'NUMERIC', 'TINYINT', 'SMALLINT', 'INTEGER', 'FLOAT', 'DOUBLE', 'T_NULL', 'TIMESTAMP', 'BIGINT', 'MEDIUMINT', 'DATE', 'TIME', 'DATETIME', 'YEAR', 'NEWDATE', 'VARCHAR', 'BIT'); FieldtypeString2: array [MYSQL_TYPE_NEWDECIMAL..MYSQL_TYPE_GEOMETRY] of String=( 'NEWDECIMAL', 'ENUM', 'SET', 'TINY_BLOB', 'MEDIUM_BLOB', 'LONG_BLOB', 'BLOB', 'VAR_STRING', 'STRING', 'GEOMETRY'); begin if mysql_field_type(mySQL_Field) in [MYSQL_TYPE_DECIMAL..MYSQL_TYPE_BIT] then Result := FieldtypeString1[mysql_field_type(mySQL_Field)] else if mysql_field_type(mySQL_Field) in [MYSQL_TYPE_NEWDECIMAL..MYSQL_TYPE_GEOMETRY] then Result := FieldtypeString2[mysql_field_type(mySQL_Field)] else Result := 'unknown'; end; function GetFieldFlagString(mySQL_Field: PMYSQL_FIELD): String; begin Result := ''; if IS_NUM_FIELD(mySQL_Field) then begin if (mysql_field_flag(mySQL_Field) and UNSIGNED_FLAG) <> 0 then Result := ' UNSIGNED'; if (mysql_field_flag(mySQL_Field) and AUTO_INCREMENT_FLAG) <> 0 then Result := Result + ' INC'; end else begin if (mysql_field_flag(mySQL_Field) and ENUM_FLAG)<>0 then Result := ' ENUM' else if (mysql_field_flag(mySQL_Field) and SET_FLAG)<>0 then Result := ' SET' else if (mysql_field_flag(mySQL_Field) and BLOB_FLAG)<>0 then Result := ' BLOB'; end; if IS_NOT_NULL(mysql_field_flag(mySQL_Field)) then Result := Result + ' NOT NULL'; end; procedure TForm1.TableListBoxClick(Sender: TObject); var i, r, field_count, row_count: Integer; mySQL_Res: PMYSQL_RES; MYSQL_ROW: PMYSQL_ROW; mySQL_Field: PMYSQL_FIELD; sql: String; tablename: String; begin ClearGrid(FieldListGrid); with TableListBox do tablename := Items[ItemIndex]; tablename := DoQuote(tablename); sql := 'select * from ' + tablename; if mysql_real_query(ConHandle, PChar(sql), Length(sql))<>0 then raise Exception.Create(mysql_error(ConHandle)); mySQL_Res := mysql_store_result(ConHandle); if mySQL_Res<>nil then begin try field_count := mysql_num_fields(mySQL_Res); FieldListGrid.RowCount := field_count+1; TableStringGrid.ColCount := field_count; for i := 0 to field_count - 1 do begin mySQL_Field := mysql_fetch_field(mySQL_Res); if mySQL_Field<>nil then begin TableStringGrid.Cells[i, 0] := mysql_field_name(mySQL_Field); FieldListGrid.Cells[0, i+1] := mysql_field_name(mySQL_Field); FieldListGrid.Cells[1, i+1] := GetFieldTypeString(mySQL_Field); FieldListGrid.Cells[2, i+1] := IntToStr(mysql_field_length(mySQL_Field)); FieldListGrid.Cells[3, i+1] := GetFieldFlagString(mySQL_Field); end; end; //Get Data row_count := mysql_num_rows(mySQL_Res); if row_count>0 then begin TableStringGrid.RowCount := row_count + 1; for r := 1 to row_count do begin MYSQL_ROW := mysql_fetch_row(mySQL_Res); if MYSQL_ROW<>nil then begin for i := 0 to field_count - 1 do TableStringGrid.Cells[i, r] := MYSQL_ROW^[i]; end; end; end else begin TableStringGrid.RowCount := 2; for i := 0 to field_count - 1 do TableStringGrid.Cells[i, 1] := ''; end; finally mysql_free_result(mySQL_Res); end; end; end; end. [edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit] |
Re: MySQL Daten Bank Editor
Scheint aber Win32 und kein .Net zu sein.
|
DP-Maintenance
Dieses Thema wurde von "mkinzler" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Datenbanken" verschoben.
Kein Vorschlag zur CodeLibrary sondern eine Frage |
Re: MySQL Daten Bank Editor
Ja natürlich sorry ist win 32 hatte mich verdrückt.
//PS. so besser habe es geändert |
Re: MySQL Daten Bank Editor
Dann ändere das Bitte.
|
Re: MySQL Daten Bank Editor
mhhhhh?????
|
Re: MySQL Daten Bank Editor
Delphi-Code wäre die bessere (lesbarere) Variante zum Formatieren des Quellcodes (bitte den Eingangsbeitrag nochmal überarbeiten).
Ich verstehe deine Probleme nicht: Zitat:
Zitat:
Zitat:
Zu den Möglichkeiten, die MySql dazu bietet, siehe u.a. ![]() Gruß Jürgen |
Re: MySQL Daten Bank Editor
Liste der Anhänge anzeigen (Anzahl: 1)
Danke das mit dem logout button hab ich eine andere variante gewält. Ja ein button mit dem man eine CREATE TABLE ausführt
mit dem editor feld möschte ich einträge in den sql tabellen bearbeiten wie bei Nvicat+MySQL ( ![]() Hier 1 Bilde so wie es Fertig aussehen soll. s. Anhang [edit=Admin]Bild in den Anhang verfrachtet. Mfg, Daniel[/edit] |
Re: MySQL Daten Bank Editor
Das kann so nicht funktionieren.
Bei den Spalten musst Du ja noch Zusatzinformationen wie Datentyp etc. angeben können. Nur der Name reicht nicht. Schau Dir mal an, wie die Jungs von HeidiSQL das gelöst haben. HeidiSQL ist übrigens auch mit Delphi geschrieben und OpenSource. Das heisst Du kannst da gucken wie das im Detail gemacht wurde, und HeidiSQL ist ein geniales Management-Tool für MySQL-Datenbanken. |
Re: MySQL Daten Bank Editor
Hidisql ist gut aber nicht ganz das was ich wollte gibt es auc hidisql componeten für delphi 7 habe nur welche für delphi 10 und 11 gibt es auch einen anderen weg z.B das ich direckt an den tabelen die einträge bearbeiten kann. wie z.B bei Navicat
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz