[Delphi] database-driven programma, welke opties?

Pagina: 1
Acties:
  • 233 views sinds 30-01-2008
  • Reageer

  • spaceboy
  • Registratie: Februari 2001
  • Laatst online: 17:53

spaceboy

Op grote hoogte

Topicstarter
Ik wil een goed-opgezet Delphi-programma gaan maken. Hierbij zou het heel handig zijn als ik een DBMS kan gebruiken. Bijvoorbeeld Access. Het probleem is alleen dat ik als het EVEN kan geen gebruik wil maken van ODBC (en dus ook ADO neem ik aan). Gewoon een .exe en een .mdb of iets dergelijks mag nog wel. Niet het aanmaken van ODBC-koppelingen e.d. Zijn hier alternatieven voor?

Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Je zult toch op de een of andere manier moeten aangeven hoe je programma met die DB moet connecteren , en waar die db zich bevind.
Of je doet dit met ODBC, of je doet dit met ADO....

https://fgheysels.github.io/


  • spaceboy
  • Registratie: Februari 2001
  • Laatst online: 17:53

spaceboy

Op grote hoogte

Topicstarter
whoami schreef op 23 October 2003 @ 19:29:
Je zult toch op de een of andere manier moeten aangeven hoe je programma met die DB moet connecteren , en waar die db zich bevind.
Of je doet dit met ODBC, of je doet dit met ADO....
In het land van ASP en PHP enzo heb je van die DSN-less connecties, dan zet je een .txt bestandje ofzo in dezelfde directory met een verwijzing naar bijvoorbeeld de database.mdb file. Dat werkt zonder dat je in Windows moet gaan registreren hoe en waar de data kan worden gevonden. Het komt op mij wat overbodig over. Maar goed, 't kan dus niet begrijp ik... :(

Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Mjah......
Je moet nu ook geen databank met een txt-filetje gaan vergelijken.

Tuurlijk kan je een bestand lezen zonder dat je daarvoor een connectiestring of whatever nodig hebt. Een DBMS is trouwens wel wat meer dan een gewoon bestandje.
Om te kunnen communiceren met een databank heeft je programma extra info nodig, en die info ga je gaan aanleveren dmv een connectie-string.
Daarnaast zullen er nog wel wat dll's etc nodig zijn om die functionaliteiten te kunnen aanspreken.

https://fgheysels.github.io/


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 15-08 18:56

alienfruit

the alien you never expected

Kijk eens naar Flash Filer (sf.net) of NexusDB vooral NexusDB is een fantastische native Delphi database en ook bloedje snel gezien zijn special geschreven sockets componenten. Afgezien hiervan zou je ook eens kunnen kijken naar de verschillende native drivers voor bijv. MySQL/PostgresSql en Oracle.

edit:
Ik net een veel mooier verhaal getypt, maar toen ik wilde postte kreeg ik te horen dat Apollo vervelend zat te doen :( Weg tekst :'(

[ Voor 20% gewijzigd door alienfruit op 23-10-2003 20:05 ]


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 14:22

Tomatoman

Fulltime prutser

spaceboy schreef op 23 October 2003 @ 19:22:
Het probleem is alleen dat ik als het EVEN kan geen gebruik wil maken van ODBC (en dus ook ADO neem ik aan).
Dan gebruik je toch gewoon DBExpress? Dan heb je alleen een DLL nodig voor het juiste datatype en klaar ben je. Geen installatie, geen registerinstellingen, niets.

Een goede grap mag vrienden kosten.


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
tomatoman schreef op 23 October 2003 @ 21:35:
[...]

Dan gebruik je toch gewoon DBExpress? Dan heb je alleen een DLL nodig voor het juiste datatype en klaar ben je. Geen installatie, geen registerinstellingen, niets.


Maar je zult toch wel op de een of andere manier een connectiestring oid moeten opgeven?

https://fgheysels.github.io/


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

tomatoman schreef op 23 oktober 2003 @ 21:35:
[...]

Dan gebruik je toch gewoon DBExpress? Dan heb je alleen een DLL nodig voor het juiste datatype en klaar ben je. Geen installatie, geen registerinstellingen, niets.
En zelfs de DLL's heb je niet allemaal nodig, want de meeste kan je vervangen door het usen van een unit. :)

/edit

Maar je zal nog steeds je DBMS moeten installeren. Als je echt voor een interne DB engine wilt gaan kan ja naast degene die alienfruit noemt ook kiezen voor Firebird embedded of zoek er 1 op http://www.kylecordes.com/bag/ of http://www.torry.ru/

[ Voor 26% gewijzigd door LordLarry op 24-10-2003 09:03 ]

We adore chaos because we like to restore order - M.C. Escher


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Eerlijk gezegd snap ik het bezwaar tegen nog ADO niet. Ik gebruik al tijden ADO in mijn Delphi applicaties. Ik heb ergens een locatie naar de database staan (ini-file of register) en dan bouw ik aan de hand daarvan dynamisch een connectionstring op. Vervolgens hoeft er niets geregistreerd of geïnstalleerd te worden: gewoon gaan met die banaan.
Je kunt het jezelf nog makkelijker maken door de database in dezelfde map (of een submap) als je exe te zetten en dan aan de hand daarvan een statische connectionstring opbouwen. Dat is echter niet zo netjes (bijvoorbeeld wanneer je klant de database op het netwerk wil hebben...)

Tenzij je er bezwaar tegen hebt de MDac van Microsoft te installeren. Dat terwijl deze op elk systeem standaard aanwezig is...

My personal website


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

OZ-Gump schreef op 24 oktober 2003 @ 09:26:
Tenzij je er bezwaar tegen hebt de MDac van Microsoft te installeren. Dat terwijl deze op elk systeem standaard aanwezig is...
Dat is niet helemaal waar. De oudere Windows hebben helemaal geen MDAC (Win95) of een oude (Win98/NT/ME) zodat je niet de nieuwste Access versie kan gebruiken. Installaties van andere software pakketten verhogen soms de MDAC versie, maar je moet natuurlijk uitgaan van een kale Windows installatie.

We adore chaos because we like to restore order - M.C. Escher


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

LordLarry schreef op 24 October 2003 @ 11:40:
[...]

Dat is niet helemaal waar. De oudere Windows hebben helemaal geen MDAC (Win95) of een oude (Win98/NT/ME) zodat je niet de nieuwste Access versie kan gebruiken. Installaties van andere software pakketten verhogen soms de MDAC versie, maar je moet natuurlijk uitgaan van een kale Windows installatie.
Volledig eens, maar ik durf eigenlijk ook wel uit te gaan van 98SE of misschien zelfs wel een stappie hoger.

Vandaar overigens ook dat ik zei 'tegenwoordig'. Daarmee bedoelde ik actuele systemen ;)

My personal website


  • spaceboy
  • Registratie: Februari 2001
  • Laatst online: 17:53

spaceboy

Op grote hoogte

Topicstarter
OZ-Gump schreef op 24 October 2003 @ 09:26:
...Ik heb ergens een locatie naar de database staan (ini-file of register) en dan bouw ik aan de hand daarvan dynamisch een connectionstring op. Vervolgens hoeft er niets geregistreerd of geïnstalleerd te worden: gewoon gaan met die banaan.
Huh?? DIT is dus interessant! Maar hoe ziet zo'n ini-file er dan uit? Of waar is 't uitgelegd??

Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.


  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

Gooi een ADOConnection component op je Datamodule/form..
Bouw nu connectionstring property op door op die knop met drie puntjes te klikken (bij property connectionstring)

Copy paste die connectionstring. Nu probeer hetzelfde string dynamisch op te bouwen door gebruik te maken van variablen voor bv. username, password enz..
Dus deze connectionstring bouw je runtime en je bent klaar.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

In de ini of het register staat alleen de locatie van de database, bijvoorbeeld c:\programmeren\testdb.mdb (ja, ik heb een map 'programmeren' op mijn pc :p)

Het volgende stukje code is rechtsreeks uit een app gekopieerd, maar een klein beetje aangepast om hier te kunnen posten. DBP is de variabele waarin de databaselocatie staat
Delphi:
1
2
3
4
5
6
7
8
9
  ADOcon.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
                             'User ID=Admin;Data Source=' + 
                              DBP + ';Persist Security Info=False';
  try 
    ADOcon.connected := True;
  except
    MessageDlg('Fout bij verbinden met database', mtError, [mbOK], 0);
    //nog wat error-handling
  end;
Overigens is de Format() functie natuurlijk iets makkelijker, zodat je niet met string concattenation hoeft te werken ;)

Edit:
Sorry voor layout F#ck-up, maar da's door de bug in react (quotes etc.)

[ Voor 9% gewijzigd door OZ-Gump op 24-10-2003 16:59 ]

My personal website


  • Just_a_Gamer
  • Registratie: November 2001
  • Laatst online: 19:09
spaceboy schreef op 24 October 2003 @ 16:43:
[...]

Huh?? DIT is dus interessant! Maar hoe ziet zo'n ini-file er dan uit? Of waar is 't uitgelegd??
Kijk maar eens naar de class TIniFile in de delphi help

een ini file kan zo uitzien

[Connectie1]
DatabaseLocatie=<ip/FilePath/Hostnaam>
User=<usernaam>
Password=<Password> ==> Gelieve niet de password opslaan tenzij je de inifile encrypt of de password encrypt :)

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

spaceboy schreef op 24 October 2003 @ 16:43:
[...]

Huh?? DIT is dus interessant! Maar hoe ziet zo'n ini-file er dan uit? Of waar is 't uitgelegd??
Pas op: [rml]LordLarry in "[ Delphi] database-driven programma, welk"[/rml]

We adore chaos because we like to restore order - M.C. Escher

Pagina: 1