Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hallo,

mich plagt mal wieder ein problem, diesmal geht es um den c builder 5 von borland und eine datenbankanbindung. ich habe eine primitive access-datenbank mit einer einzigen tabelle erstellt. nun soll ich einen client und einen server erstellen, der client soll datensätze an die datenbank, die an den server angeschlossen ist, versenden.ziel ist es, die vom client verschickten daten als neuen datensatz in die datenbank zu übernehmen. für den server habe ich einfach ein dbgrid-element erstellt und die datenbank angebunden, funktioniert auch gut. der client sollte mehrere edit-felder haben, die dort eingetragenen daten sollen an den server geschickt werden und als datensatz übernommen werden. da es zu aufwendig wäre jedes editfeld separat an den server zu schicken und in eine jeweilige spalte einzubinden stellte sich die frage nach sql. man kann doch alle daten aus allen editfeldern in einen sql-string packen, den verschicken, und dann innerhalb des servers diesen string als datensatz in die datenbank übernehmen, oder ? (-->also den string im server "auseinandernehmen" und auf die richtigen spalten aufteilen).gibt es da eine möglichkeit ? cu, sicker

Geschrieben

mich plagt mal wieder ein problem, diesmal geht es um den c builder 5 von borland und eine datenbankanbindung. ich habe eine primitive access-datenbank mit einer einzigen tabelle erstellt. nun soll ich einen client und einen server erstellen, der client soll datensätze an die datenbank, die an den server angeschlossen ist, versenden.ziel ist es, die vom client verschickten daten als neuen datensatz in die datenbank zu übernehmen. für den server habe ich einfach ein dbgrid-element erstellt und die datenbank angebunden, funktioniert auch gut. der client sollte mehrere edit-felder haben, die dort eingetragenen daten sollen an den server geschickt werden und als datensatz übernommen werden. da es zu aufwendig wäre jedes editfeld separat an den server zu schicken und in eine jeweilige spalte einzubinden stellte sich die frage nach sql. man kann doch alle daten aus allen editfeldern in einen sql-string packen, den verschicken, und dann innerhalb des servers diesen string als datensatz in die datenbank übernehmen, oder ? (-->also den string im server "auseinandernehmen" und auf die richtigen spalten aufteilen).gibt es da eine möglichkeit ? cu, sicker

Ui :)

Du hast also quasi ein Eingabeformular mit Editfeldern.

Ich verstehe nicht so ganz, was du mit deinem Server inklusive dbgrid machst.

Ansich sollte es eher so sein, dass du nur das Eingabeformular hast und in der gleichen Anwendung eine Datenbankverbindung (ODBC oder ADO oder so) herstellst.

Dann bastelst du aus den Werten der Eingabefelder ein entsprechendes SQL Statement und fuehrst das entsprechend aus.

-> schon hast deinen neuen Datensatz in der Datenbank

Fuer eine Access DB wuerde der SQL String etwa folgendermassen aussehen:

INSERT INTO meineTabelle (nameSpalte1, nameSpale2) VALUES ("ersterWert", "zweiterWert")

Ich hoffe einigermassen verstanden zu haben, was du anstellen willst :)

Goos

Geschrieben

Ich verstehe nicht so ganz, was du mit deinem Server inklusive dbgrid machst.

Ansich sollte es eher so sein, dass du nur das Eingabeformular hast und in der gleichen Anwendung eine Datenbankverbindung (ODBC oder ADO oder so) herstellst.

hallo !

vielen dank für deine antwort :) . ich tu mich manchmal schwer mit beschreiben, ich hab schon damit gerechnet, dass es schwer verständlich wird :rolleyes: . nunja, der server ist mit einer datenbank verbunden. der server soll die datenbank mithilfe eines dbgrid-steuerelements anzeigen lassen. das funktioniert auch soweit ganz gut (also anbindung durch odbc und bde alles hervorragend). der client soll auf die datenbank zugreifen können, also datensätze hinzufügen können. die datenbank wird also von fern verwaltet (der server bräuchte das dbgrid im grunde nicht - da er im hintergrund läuft - wäre nur für einen administrator wichtig, vergiss das dbgrid ansonsten)

das problem an sich ist folgendes: im client sollen mehrere editfelder sein (bezeichnung, artikelnr,...).nun will ich diese sachen als datensatz in der datenbank, die auf dem server liegt, haben. doch weiß ich nicht, wie man das macht...man könnte rein theoretisch alle editfelder einzeln an den server schicken.editfeld bezeichnung in die spalte bezeichnung packen, editfeld artikelnr. in spalte artikelnr. packen, etc...das wäre aber (denk ich mal) ressourcenverschwendung und größerer aufwand, da für einen einzigen datensatz alleine 5 (anzahl der editfelder auf dem client --> spalten in der datenbank) an-den-server-senden-vorgänge stattfinden würden. das ganze müsste doch mithilfe von sql alles in einem einzigen senden-vorgang gehen, indem man das ganze in einen sql-string packt ? also auf dem client die inhalte von allen editfeldern in einen sql-string, diesen dann an den server schicken, und der server bröselt diesen string dann auf die datenbank auf und packt die inhalte an die richtigen plätze der datenbank als 1 neuen datensatz.

verstehst du so ungefähr ? wenn nicht, wundert mich nicht ;)

cu, sicker

Geschrieben

Ja, so einigermassen hab ichs nun wohl verstanden, und dein SQL String schaut so aus, wie das Muster welches ich oben beschrieben hab.

Du musst den halt unter C++ zusammenbauen und kannst ihn dann ueber deine Verbindung zur Datenbank ausfuehren. Somit hast dann auch die Daten aller Editfelder auf einmal verschickt.

Also erzaehl nun mal, wo genau es noch haengt.

Goos

PS: Es waere uebrigens um einiges komplizierter, wenn du wirklich versuchen wuerdest, den Inhalt von jedem Editfeld einzeln in deine Tabelle zu bekommen :)

Geschrieben

Ich würde die Daten einfach alle zusammen in einen String schreiben (mit irgendetwas separiert) und diesen String an den Server schicken. Dieser soll dann aus dem String den SQL Befehl zusammenbauen und ausführen.

Das halte ich für besser, als den SQL-Befahl an den Server zu schicken und dieser führt ihn einfach aus. So könnte jemand ganz einfach deine Datenbank manipulieren.

Geschrieben

vielen dank, wo muss man den string denn einsetzen ? geht das mit dem update sql-steuerelement ? also wo muss man den INSERT INTO tblArtikel....-befehl einsetzen, damit in der datenbank eine neue zeile (--> datensatz) angehangen wird ?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...