![]() |
Datenbank: mysql • Version: 4.1 • Zugriff über: internet
eintrag zur db hinzufügen und auslesen
hallo ich verwende mysql direct.ich bin komplett neu in delphi und datenbanken bin und im netz hab ich nichts gefunden.
also: die verbindung zur datenbank (bookmarket) steht. jz soll in die tabelle (user) die die felder id, vname, nname und tel enthält der inhalt aus den edit feldern (vname: edit1 ... ) und id aufsteigend (+1) eingetragen werden. doch wie setze ich das um. als zweites sollen alle einträge die bei nname und vname stehen in einer listbox ausgegeben werden ( schema: nname1, vname1 nname2, vname2) könnt ihr mir helfen? |
Re: eintrag zur db hinzufügen und auslesen
|
Re: eintrag zur db hinzufügen und auslesen
ok danke
|
Re: eintrag zur db hinzufügen und auslesen
Hallo,
da du keinen Wert für VNAME übermittelst, diese Spalte aber mit dem constraint NOT NULL angelegt wurde, erhältst du wahrscheinlich diese Fehlermeldung (no default for column defined). Grüße vom marabu PS: Warum hast du den Text deines Beitrags entfernt? |
Re: eintrag zur db hinzufügen und auslesen
wie muss der befehl dann lauten, um mehrere enträge zu machen mit den dazugehörigen edit feldern?
|
Re: eintrag zur db hinzufügen und auslesen
Was meinst du mit mehreren Einträgen?
|
Re: eintrag zur db hinzufügen und auslesen
na in die tabelle user bei vname edit1 bei nname edit2 usw....
|
Re: eintrag zur db hinzufügen und auslesen
1. Verwendenung von datensensitiven Komponenten (TDBEdit satt TEdit usw)
2. Verwendung von SQL Wie trägst du bisher ein. |
Re: eintrag zur db hinzufügen und auslesen
Delphi-Quellcode:
if assigned(FResult) then
begin if FMysql.Status<>MYSQL_STATUS_READY then begin ShowMessage('Ein Ergebnis wurde unvollständig gelesen!'); FreeAndNil(FResult); end; end; q:='INSERT INTO `user` '+'(`nname`)'+' VALUES '+'(' + #39 + edit1.Text + #39')'; FResult:= FMysql.query(q, true, ex); if assigned(FResult) then ShowMessage('Query: OK - Ergebnis gespeichert') else if ex then ShowMessage('Query: OK - ausgeführt') else ShowMessage('Query fehlgeschlagen: '+FMysql.LastError); end; |
Re: eintrag zur db hinzufügen und auslesen
Delphi-Quellcode:
q:='INSERT INTO `user` '+'(`nname`, `vname`, ... )'+' VALUES '+'(' + #39 + edit1.Text + #39', ' + #39 + edit2.Text + #39+ ... +')';
|
Re: eintrag zur db hinzufügen und auslesen
ok danke klappt, kannst du mir jz auch noch sagen wie ich dann alle vor mit den dazugehörigen nachnamen in eine combobox eintragen kann??
|
Re: eintrag zur db hinzufügen und auslesen
Delphi-Quellcode:
ComBoBox.Add( <Vorname> +', '+ <Nachname>);
|
Re: eintrag zur db hinzufügen und auslesen
öhmm und die holt der sich dann so einfach aus der datenbank?? ich dachte das muss man irgendwie mit select from machen...
|
Re: eintrag zur db hinzufügen und auslesen
Natürlich erst per SQL holen:
SQL-Code:
select nname, vname from <tabelle>;
|
Re: eintrag zur db hinzufügen und auslesen
Hallo, ich bin in MySQL direct nicht bewandert, aber im Prinzip geht das so.
- Abfrage ausführen
SQL-Code:
- ComboBox1.Items.Clear
SELECT Name, Vorname FROM Tabelle
- Auf den ersten Datensatz positionieren - solange nicht EOF: -
Delphi-Quellcode:
- auf nächsten Datensatz positionieren
ComboBox1.Items.Add(FieldByName('Name').AsString + ', ' + FieldByName('Vorname').AsString);
|
Re: eintrag zur db hinzufügen und auslesen
eben. das problem ist, dass ich die abfrage für mysql nicht hinkriege...
|
Re: eintrag zur db hinzufügen und auslesen
Meinst Du nun den SQL- oder den Delphi-Code?
|
Re: eintrag zur db hinzufügen und auslesen
Delphi-Quellcode:
also damit geht, nur er kennt fieldbyname nicht....
q:='Select (`nname`, `vname`)'+' From '+'(`user`)'+' WHERE '+'(`id=1`)';
FResult:= FMysql.query(q, true, ex); |
Re: eintrag zur db hinzufügen und auslesen
Versuch es mal mit FieldValueByName.
|
Re: eintrag zur db hinzufügen und auslesen
nein auch nciht, er nimmt auch asstring nicht an.....
|
Re: eintrag zur db hinzufügen und auslesen
Zitat:
|
Re: eintrag zur db hinzufügen und auslesen
ja richtig....
|
Re: eintrag zur db hinzufügen und auslesen
Dann versuch mal
Delphi-Quellcode:
Das sollte dann ein PChar sein.
FResult.FieldValueByName('Name')
//Edit: Sorry, das muss natürlich nname heißen. |
Re: eintrag zur db hinzufügen und auslesen
ja das kennt er und programm startet auch allerdings stoppt er jetzt hier:
Delphi-Quellcode:
for i:=0 to fFieldsCount-1 do
|
Re: eintrag zur db hinzufügen und auslesen
fFieldsCount ist eine private Property von TMysqlResult. Benutze mal FieldsCount.
|
Re: eintrag zur db hinzufügen und auslesen
ändert sich nicht stoppt da immer noch...
Delphi-Quellcode:
bei mir siehts so aus:
begin
result:=-1; if aName<>'' then begin for i:=0 to FieldsCount-1 do if not CaseSensitive then begin if uppercase(FieldDef(i).Name)=uppercase(aName) then begin result:=i; break; end; end else if FieldDef(i).Name=aName then begin result:=i; break; end; end; end; //////////////////////////////////////////////////////////////////////////////// // returns the value of a field with a specific name or nil if there is no field with that name //note: there may be fields with nil value ... so do not take the result as there is no field with that name function TMysqlResult.FieldValueByName(aName: string; CaseSensitive: boolean): pchar; begin result:=FieldValue(FieldIndexByName(aName,CaseSensitive)); end; end.
Delphi-Quellcode:
EDIT:wenn ich allerding das ausführe klappts....
q:='Select (`nname`, `vname`)'+' From '+'(`user`)'+' WHERE '+'(`id=1`)';
FResult:= FMysql.query(q, true, ex); label19.caption:=(fresult.FieldvalueByName('nname')+ ', ' + fresult.FieldValueByName('vname'));
Delphi-Quellcode:
q:='Select (`id`)'+' From '+'(`user`)';
FResult:= FMysql.query(q, true, ex); anzahl:=strtoint(fresult.FieldValueByName('id'))+1; |
Re: eintrag zur db hinzufügen und auslesen
áhh fehler gefunden: man kann immer nur eine sache abfragen.....aber das ist doch scheiße...
|
Re: eintrag zur db hinzufügen und auslesen
Zitat:
|
Re: eintrag zur db hinzufügen und auslesen
Zitat:
|
Re: eintrag zur db hinzufügen und auslesen
Hallo,
Delphi-Quellcode:
was ist das denn für eine ulkige Syntax?
q:='Select (`nname`, `vname`)'+' From '+'(`user`)'+' WHERE '+'(`id=1`)';
Ich würde es so versuchen:
Delphi-Quellcode:
Außerdem finde ich den Namen USER für eine Tabelle nicht sonderlich clever - es könnte sich um ein reserviertes Wort handeln.
q := Format('SELECT nname, vname FROM user WHERE id = %d', [1]);
Statt der 1 als Argument kann natürlich auch eine Integer-Variable verwendet werden. Ansonsten zeigt das Beispiel von ![]() Freundliche Grüße |
Re: eintrag zur db hinzufügen und auslesen
Hallo thx: mit
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 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