Entwickler-Ecke
Datenbanken - Datenbankzugriff mit Delphi
madmat - Di 23.07.02 20:19
Titel: Datenbankzugriff mit Delphi
Hallo,
ich hab mich zwar durch viele Postings gewühlt, aber noch keine DB Grundlagen gefunden.
Wie sind denn die ersten Ansätze in Delphi, wenn ich z.B. eine Access DB mit 3 Tabellen habe und mit einem Programm die Datensätze auslesen (zum weiterrechenen) und wieder in die DB schreiben will ?
Wo finde ich da so eine Art Einsteiger Tutorial ?
Danke für jede Hilfe......
madmat - Mi 24.07.02 10:34
Danke, werde mein Glück gleich mal probieren.
Mein Chef hat übrigens Delphi 6 Professional vorgeschlagen und gekauft, ist das ausreichend bemessen ?
Steffer - Mi 24.07.02 11:12
>Mein Chef hat übrigens Delphi 6 Professional vorgeschlagen und
>gekauft, ist das ausreichend bemessen ?
Ja, absolut
madmat - Mi 24.07.02 11:52
Hmm, jetzt hab ich die grundlegenden Tutorials durch, also Tabellen per Table Komponente (die in Delphi 6 im Reiter BDE steckt) und Datasource an ein Delphiprojekt angebunden und in DBedit Felder ausgegeben.
Schön....
Aber wie kann ich jetzt die verschiedenen Tabellen einer Access DB ansprechen ? Oder muss ich die alle einzeln exportieren ?
Das wäre doch wider dem Sinn einer Datenbank, oder ?
Klabautermann - Mi 24.07.02 13:51
Hallo,
es gibt verscheidene arten wie du auf die Access Datenbank zugreifen kannst. Wenn du bei der BDE bleiben willst kannst du über den entsprechenden ODBC Treiber drauf zugreifen. Das würde ich nicht empfehlen. Weiter möglichkeiten währen DAO oder ADO.
Verwendet habe ich bisher nur die letzte welche auch die aktuellste darstellt. Hierzu benötigst due ADO Komponenten und einen Connection Sting mit dem du dich verbindest. Eine Diskussion zu letzteren findest du
hier [
http://www.auq.de/viewtopic.php?t=231]. Ich kenne den lieferumfang von D6Pro nicht. Sollten dort keine ADO Komponenten enthalten sein findest du auch kosstenlose bei den
üblichen verdächtigen [
http://www.auq.de/viewtopic.php?t=27].
Desweiteren kannst du sicherlich einiges zum Thema DELPHI und Access hier in der Datenbanksparte finden und dir
hier [
http://www.auq.de/viewtopic.php?t=160] anregungen holen ob Access wirklich die beste Wahl für dein Problem ist.
Gruß
Klabautermann
madmat - Mi 24.07.02 18:35
Cool, danke.
Nächstes Problem weiter unten ;)...
Ich habs jetzt erstmal über ODBC geschafft, da´s das erste war das funktionierte.
Warum rätst Du davon ab ?
Muss der Anwender irgendwas Spezielles installieren damits bei ihm funzt ?
Ist Access zu langsam/gross/kompliziert ?
Unsere Kunden liefern nur im Access Format, daher fiel die Wahl erstmal leicht.
Angenommen ich bleibe bei jetziger Lösung, wie kann ich über Delphi eine leere DB erzeugen ?
Eine Routine soll abprüfen ob eine DB vorhanden ist, wenn nicht eine leere anlegen.
Mir fehlt "nur" die Syntax des Anlegens, der Rest ist klar.
Vielen Dank im Vorraus
Alfons-G - Mi 24.07.02 19:01
ODBC ist leider ziemlich langsam :(
Eine Datenbank anlegen ist über ODBC nicht möglich, da der Anwender eine ODBC-Verknüpfung mit einer bestehenden DB benötigt, damit das Programm darauf zugreifen kann.
Du müsstest also eine leere Access-DB mitliefern (die kann ganz leer sein), und diese, wenn der Anwender noch keine hat, ins passende Verzeichnis kopieren. Dein Setup muss sich dann auch um die ODBC-Verküpfung kümmern. Zu diesem Thema gibt's was in der Tipps-Rubrik bei Swiss Delphi-Center.
Bessere Performance erreichst Du mit speziellen Access-Zugriffskomponenten. Diese machen auch die BDE überflüssig. Bei Torry & Co findest Du z.B. KaDAO.
Ansonsten bleibt der Zugriff über ADO, wie von Klabautermann vorgeschlagen.
:idea:
Klabautermann - Do 25.07.02 09:29
Hallo,
| madmat hat folgendes geschrieben: |
| Muss der Anwender irgendwas Spezielles installieren damits bei ihm funzt ? |
Das ist bei jeder Lösung der Fall. Bei der ODBC-Variante musst du neben den ODBC-Access Treiber auch noch die BDE (über 6 MB) mit ausliefern. Diese darf (wenn ich richtig informiert bin) sogar nur mit von Borland lizensierten Installprogrammen ausgeliefert werden, es ist dir also nicht mehr freigestellt welchen Installer du verwendest.
| madmat hat folgendes geschrieben: |
| Ist Access zu langsam/gross/kompliziert ? |
Meines wissens frakmentieren Access DBs recht leicht und werden sehr schnell sehr groß. Allerdings weiß ich dies nur vom Hörensagen, da ich Access nur auf Pocket-PCs einsetze und die dortige variante ohnehin nicht mit der Desktop Lösung verglichen werden kann ;).
Wenn du allerdings mit sehr vielen Datensätzen arbeiten willst, solltest du auf eine Client/Server Datenbank umsteigen. Access ist eine Desktop DB - deshalb sollte man keine zu hohen Ansprüche an sie stellen.
| madmat hat folgendes geschrieben: |
| Angenommen ich bleibe bei jetziger Lösung, wie kann ich über Delphi eine leere DB erzeugen ? |
Wie Alfons-G sagte, das geht nicht so einfach. Auch mit der von mit faforisierten ADO Lösung geht das nicht, da diese vorraussetzt, das man sich beim Datenbankserver anmeldet bevor man eine Datenbank erstellt. Da das Desktopsystem Access keinen solchen server hat muss man sich direckt mit der Datenbank verbinden. Das setzt aber vorraus, das diese Existiert.
Mit speziellen Access Komponenten könnte das möglich sein.
| madmat hat folgendes geschrieben: |
| Eine Routine soll abprüfen ob eine DB vorhanden ist, wenn nicht eine leere anlegen. |
Du könntest die lehre DB als rercource in deine EXE Linken und dann aus dieser auf die Platte speichern wenn du mal wieder eine leere DB benötigst.
Gruß
Klabautermann
Renegade - Do 25.07.02 09:39
Und noch was Grundsätzliches zur Access-DB.
Mit dem was Klabautermann schrieb
| Zitat: |
| Meines wissens frakmentieren Access DBs recht leicht und werden sehr schnell sehr groß. Allerdings weiß ich dies nur vom Hörensagen, |
hat er absolut recht. Access-DB blähen sich mit der Zeit sehr schnell auf. Vor allem dann, wenn du Inizes benutzt. Du mußt dich unbedingt um eine Reorganisation der DB kümmern - ansonsten wird die Performance eines Tages unerträglich. Ich meine mal gelesen zu haben, das MS dafür ein Tool zur verfügung stellt - habe es allerdings noch nicht gesehen.
Mfg
madmat - Do 25.07.02 15:05
Titel: @Klabautermann
Dank an alle für die Unterstützung, ich werde es einfach mal ausprobieren und wenns Performance Probleme geben sollte weiss ich ja wo ich zu suchen habe :)
| Klabautermann hat folgendes geschrieben: |
Hallo,
Du könntest die lehre DB als rercource in deine EXE Linken und dann aus dieser auf die Platte speichern wenn du mal wieder eine leere DB benötigst.
|
Wie genau würde das gehen ?
madmat - Do 25.07.02 16:34
Danke, klappt bestens.
Kann mir zum Schluss noch jemand ´nen Tip geben wie ich die Abfrage von Passwort und Username der DB beim Programmstart unterdrücke ?
hat sich erledigt Loginprompt auf FALSE setzen
uli - Di 10.09.02 13:41
Hallo madmat,
dein Eintrag ist schon einige Zeit her, aber vielleicht kannst du noch einen Tip gebrauchen.
Auf der Seite
http://www.delphi.pari.bg findest du DB-Komponenten, mit denen du über DAO auf eine AccessDB zugreifen und auch erzeugen kannst.
Bei der DataBase-Komponente gibt es auch eine Methode zum Komprimieren bzw. Defragmentieren der DB.
Bei den Komponenten sind auch Beispiele dabei.
Gruß Uli.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!