Hogyan írunk adatbázis alkalmazást Delphi-ben ?
2005-04-16T01:46:37+02:00
2006-06-20T18:24:40+02:00
2022-07-19T06:52:55+02:00
  • Szia!
    Én csak azért léptem be, mert szeretném megkérdezni, hogy tudsz-e nekem segiteni abba, hogy hogyan kell access-ből adatbázist mysql-be importálni?
    Mutasd a teljes hozzászólást!
  • Szia!

    Hozd létra az alapadatbázis Access-ben, úgy a legegyszerűbb.

    Aztán a formra tegyél egy kezelőt, én ADO-t használok, azt tudom ajánlani. Kell egy ADOConnection, egy ADOTable, egy ADOQuery (ez csak, ha lekérdezéseket is akarsz csinálni), DBGrid, und egy Datasource.

    AdoConnection Connection String tulajdonságon dupla katt, majd bejön, hogy add meg a paramétereket. Ne ess kétségbe, mert a wizard megcsinálja. Katt a wizardra. Itt ki kell választani a motort, neked a Jet OLE DB 4.0 -s kell. Majd megadod a köv. képernyőn az útvonalat, és tesztelheted a kapcsolatot. Ha nem jó a teszt, akkor lehet, hogy nyitva van még az adatbázis valahol.

    Az utolsó fülre (asszem az utolsó) kattintva a JET Ole DB Password tulajdonságnál meg tudod adni az adatbázis jelszót, amit a progi tud használni ahhoz, hogy elérhesse az adatokat, persze csak akkor, ha ACCESS-ben beállítottál jelszót az adatbázisra.

    Ha custom fájlokat akarsz használni, akkor se ess kétségbe. Miután a wizard - on OK-t nyomtál, visszatér az eredeti ablak, ahol már lászik a Connection string. Custom fájlhasználat esetében vágd ki onnan, és valamilyen eseményhez hozzá tudod csapni úgy, hogy ADOConnection1.ConnectionString:= ide kell a string. Itt megkeresed, hol van a fájl elérés benne, és szépen manuálisan, hozzáadod, mint stringet. Pl: 'akármi' + edit1.Text + ';'

    Ebben az esetben a táblát is manálisan állítsd be. AdoTable1.Connection:=AdoConnection1;
    Datasource1.Dataset:=Adotable1;
    DBgrid1.datasource:=Datasource1;

    Az AdoConnection1.Loginpromt:=false így nem kér futásidőben bejelentkezést.

    Valamint kell az AdoConnection1.Connected:=true, és az AdoTable1.Tablename:= ide az kell, amelyik táblát akarod használni, de ez is string típusú. Vagyis mondjuk 'termékek'.

    Ha idáig jutottál, akkor folytatjuk.
    Mutasd a teljes hozzászólást!
  • Szia.

    Javaslom, hogy mielőtt további kérdésekbe merülnél. Légy oly szíves és részletesen olvasd át az általad talált (kereső kifejezésekre) kapott találatokat és próbáld meg értelmezni amit talász, ha nem szeretnéd, hogy egyéb sorstársaid sorsára jussál. Ja és előtte tisztázzad magadban az adatbázis és a tábla közötti különbséget.
    Illetve inkább nyiss új topikot, mert egy olyan éve elmerült topicot nem illik elővenni.
    Mutasd a teljes hozzászólást!
  • Sziasztok! Lenne elnezest, egy nagyon kezdő kérdésem, es gondoltam uj temat folosleges nyitni neki, ugyhogy ide irom.
    Szoval az lenne a problemam hogy egy access adatbazist szeretnek megnyitni, ugye delphiben. Olvastam itt prog.hu-n is a tutorialokat, de azon nem jutok tul, hogy hiaba irom be az adatokat, nem nyitja meg vagy hibauzenet vagy mas ... szoval a konkret dolog: van egy db1.mdb access adatbazisom, abban a mappaban ahova magat az alkalmazast is mentem. Ki van huzva a form-ra a datasource es a table is, ossze is kotottem oket, es Table - DatabaseName-nel nem tudom mire hivatkozzak, szoval ha Access adatbazist valasztom ki nem jo, szoval ott az alisnak nem tudom mit kell irni, valamint TableName-nek db1.mdb van beírva... Legyszi szajbaragosan irjatok le hogy ebben a helyzetben, db1-el mit hova miert kell irnom, mert ezen nem tudok atlepni:/ Elore ezer kösz es bocs a lamulasert.
    Mutasd a teljes hozzászólást!
  • Csak kíváncsiságból kérdem:
    Érdemes-e egy nagyobb, többfelhasználós projectnél külön egy olyan daemont írni, ami kezeli a felhasználókat, és ami biztonságos beléptetési mechanizmust használ?
    Tehát valami olyasmire gondolok, hogy fut a szerveren egy daemon (vagy service, mindegy), aminek van egy külön adatbázisa (lehet akár plain-text is, mint pl. Linuxon a passwd/shadow páros), és a kliens-programok ezt kérik a userek authentikációjára, majd ha a jelszó ok, akkor a daemon visszaadja a kliens jogait, stb.stb.
    Ezután az adatbázis-kezelő alkalmazás tartaná "kordában" a usert a daemon-tól visszakapott jogosultságok alapján...
    Életképes-e ez? Szokták így csinálni?
    Ha nem, miért nem?
    Válaszodat előre is köszi!
    Mutasd a teljes hozzászólást!
  • -olyan dolgokat is érdemes még végiggondolni, hogy pl. ki végezze el a user authentikációt? a program (egy táblából), vagy az rdbms??? mindkettőnek vannak előnyei hátrányai, kezdve olyan 1xű dologgal, hogy az adott rdbms-t hány userre licenszelték. :)
    Mutasd a teljes hozzászólást!
  • Köszönöm CETT !
    Végremegértettük egymást és én ILYENEKET akartam olvasni/hallgatni.

    Még vki más ?

    Mutasd a teljes hozzászólást!
  • azt már meg se említem, milyen fontos a source megfelelő mértékű és tartalmú dokumentálása, a későbbi újrafelhasznosítás/debugolás/továbbfejlesztés tekintetében...
    nincs is annál rosszabb, amikor egy másfél évvel ezelőtti programodat kell elővenni, és azt se tudod mi mit csinál benne, s miért...

    az alapos tesztelésre valós szintuációkkal (első körben megfelel erre a szőke bartánő, odaültetni, mögé rakni egy kamerát, és hadd nyúzza a progit...) is nagy szerep hárul.
    Mutasd a teljes hozzászólást!
  • ok értelek.

    szóval 200 tábla az már tipikusan az a méret, ahol nem ttable meg tdatasource-al dolgozik az ember, hanem
    - csak query-kkel piszkálod a táblákat,
    - csak azt kérek le a serverről a kliensre, ami kell
    - nem minden táblát nyitsz meg alapból, csak ami kell
    - nem minden formot raksz autocreate-ra, ha meg kell jeleníteni egy formot, akkor példányosítod.
    - ekkora alkalmazásnál már frame-ket is használ az ember, a könnyebb karbantarthatóság érdekében,
    - el kell gondolkozni, hogy mi az a pl ellenőrzési funkció ami a kliensen kell, hogy lefusson (vagyis a serverig már el se jusson), illetve mik azok, amiket csak a serveren tudsz ellenőrizni.
    - el kell gondolkozni, hogy mi az, amit az alkalmazásba érdemes belerakni, s mi az, ami inkább tárolt eljárás és/vagy trigger...
    - el kell gondolkozni a 3 rétegű alkalmazás megvalósításán.
    - plusz ilyen méreteknél már ugyebár előfordulnak a többuseres alkalmazások és minden, ami ezzel jön...
    - meg kell vizsgálni, melyek azok az adatok, amik gyakran kellenek, de ritkán változnak (ezeket lehet, hogy érdemes ilyenkor lokálba tárolni, és csak az alkalmazás indulásakkor szikronizálni)
    - esetleg a több kliens lokális adatai közötti szinkronizációt is meg kell valósítani.
    - gyakori replikáció, ami nem zavarhatja a kliensek működését (pl munkaidő végére ütemezetten végrehajtva)
    - és persze a legfontosabb: amennyiben lehetséges (az adott feladat ismeretében) a lehető legtöbb esetben a adatmanipulációt tranzakciókba pakolni, a hatékonyság végett)
    - esetleg megéri megvizsgálni azt a lehetőséget is, hogy ha már ekkora a program, akkor a gui egy része is jöhet adatbázisból (formok felépítése, szerkezete függhet a bejelentkezett user jogosultsági szintjétől, így a form felépítése is dinamikusan zajlik le)
    - ha a megrendelő kéri, akkor érdemes a lehető leginkább RDBMS függetlenre készíteni (ekkor viszont ugyebár minimálisan lehet alkalmazni triggert/tárolt eljárást/view-t). célszerű akkor is ilyenre készíteni, ha kinéz az esélye, hogy sok példányban változatos rdbms-re lehet majd értékesíteni.
    - jól bejáratott vizuális kompikat kell használni, amikkel tuti nincs semmi gond.
    - ugyanez érvényes a report-okra is.

    szóval ezek nagy részéhez semmi más nem kell, mint:
    - egyszerű józan paraszti ész,
    - rutin (nagy rutin),
    - rengeteg idő a végiggondolásához,
    - rengeteg idő a JÓ és RÉSZLETES dokumentáció elkészítéséhez, (volt már rá példa, hogy egy project-ben a doksit 5-en 3 hónapig csináltuk, aztán maga a program a doksinak hála 3 hét alatt elkészült. Ennyit számít a jó és részletes doksi.)
    - a doksi készítésébe midenképpen kell a megrendelő képviselője is, illetve az adott szakterület nagy-nagy ismerője. (pl. számlázóproginál minimum 1-2 olyan könyvelő, aki nagyon ott van a szeren, és min. 15 éve ezt csinálja)
    - aztán már csak az elszántság hiányzik.

    üdv.
    Mutasd a teljes hozzászólást!
  • A könyveket hadd ne soroljam fel, amiket olvastam (de lehet, hogy lassú a felfogásom és talán újra kéne olvasni őket !!! )
    Mutasd a teljes hozzászólást!
  • CETT ::

    Azt hiszem, hogy félreértettük egymást, mert
    1) Adatmodell-lel soha nem volt problémám. Terveztem már, láttam már, foglalkoztam már sok féle adatmodellel és sokat (MSSQL, ORACLE, IB stb.).
    2) Sok adatbázis alkalmazást már készítettem (tanulmányok, szakdolgozat, kereskedelmi célok), de lehet, hogy bután csináltam/om/ ( Mert most azt érzem, hogy rosszul/bután csináltam/om/) ==> ezt miatt írtam ezt a témát.
    3) Szóval így csináltam eddig: BDE/TDataBase/TTable/TDataSource/TDatamodule classokat haszálom. Mindegyik táblához legalább KETTŐ (2)componenst használok : TTable/TDataSource. Adatokat módosítani vagy felvinni mindig a fenti 2 komp-t haszálok. ==> Ha pl. 200 táblája van az adatszerkezetnek, akkor SOK SOK MUNKAERŐ KELL HOZZÁ, hogy ezt csináljam és LASSÚ is lehet az alkalmazásod.
    4) A (3)-as pont miatt kiváncsi vagyok a Ti véleményetekre, hogy ti hogyan csináljátok stb.

    Remélem megértettél most már és továbbá is várom a véleményeket, tapasztalatokat !

    Mutasd a teljes hozzászólást!
  • pl. úgy, hogy megtanuljuk a dolgot...

    fogsz 1-2 tankönyvet és nekiállsz megtanulni a delphi adatbáziskezelési lehetőségeit vagy itt a prog.hu-n lévő delphi-s cikkeket végigolvasva szintén megtanulhatod a dolgot. Aztán próbálkozol, majd ha konkrét kérdésed van, akkor megírod, hogy hol akadtál el, s nagyon szívesen segítünk.

    ez a tudástár nem arról szól, hogy bárkit is megtanítunk profi szinten fél óra alatt programozni, hiszen arra se időnk nincs, se kedvünk. ellenben bárkinek, aki egy konkrét problémával áll elő, nagyon szívesen segítünk...

    szóval, ha még az alapok se mennek, akkor fogj egy-két könyvet, a cikkeket innen, a google-t és ülj neki tanulni. aztán beszélhetünk...

    u.i.:
    (Nem érdekel az adatmodell !!! )

    ha adatbázissal kapcsolatos programokat akarsz készíteni, akkor viszont ezzel az álláspontal érdemes mielőbb szakítani. szerintem.
    Mutasd a teljes hozzászólást!
  • IGEN ! A programot, pontosabban az adatokat módosítani, felvenni stb. az adatbázisba.
    (Nem érdekel az adatmodell !!! )
    Mutasd a teljes hozzászólást!
  • Akkor még mindig marad a kérdésem : hogyan csináljátok meg ?


    Mit? A progamot? Az adatbázisszerkezetet? A tárolt eljárásokat? Mit?
    Mutasd a teljes hozzászólást!
  • - Igen, sok trigger / function / procdure-t használok a programmal.
    - ADO.NET-re akarok áttérni a DBE-ről.

    Akkor még mindig marad a kérdésem : hogyan csináljátok meg ?
    Mutasd a teljes hozzászólást!
  • - Én speciel egyáltalán nem használok Table komponenseket. Csak SQL utasításokat.


    - A BDE-t már illene kidobni. Amikor megjelent a Delphi 1-ben, már akkor sem volt valami jó megoldás. Teljesen elavult, rossz réteg. Használj inkább ADO-t!


    - Ha már MSSQL-t használsz, akkor csinálj benne mindent tárolt eljárással. Nagy munka az elején, de kifizetődik.
    Mutasd a teljes hozzászólást!
  • Sziasztok !

    Türelmeteket kérném !

    Lenne a következő alkalmazásom:

    Írok egy adatbázis alkalmazást Delphi-ben (MS-SQL).
    - Az MS-SQL-s adatbázisnak több táblája van (mondjuk 20 tábla !!!).
    - A TDataModul-on mindegyik táblához felveszek egy TTable-t és egy TDatasource-t (mondjuk BDE-t haszálom), beállítom a megfelelő információkkal (BDE alias, tablename stb.)
    - A recordok módosításhoz vagy felvitelekez a fenti TTable-t és TDateSource-t használom. ( Véglegesítés esetén meghívom a Post-ot és/vagy az ApplyUpdate-t)

    Probléma:
    1) Nekem ez a megoldás nem tetszik, mert ha egyszer majd kinő a programom mondjuk 50-100 táblára, akkor ez megoldás biztos, hogy NEM JÓ !

    Kérdés:
    1) Ti hogyan csinálnátok meg az ilyen alkalmazást. Azaz a TTable-t használtok vagy végig a TQuery-t használjátok (update, insert stb. utasításokkal )
    2) Fontos az, hogy egyszerre több felhasználó is tudjon dolgozni (esetleg ugyanaz a recordot módosítják ! )

    Nagyon kiváncsian várom a véleményeket, tapasztalatokat.
    Mutasd a teljes hozzászólást!
Ez a téma lezárásra került a moderátor által. A lezárás oka: KONKR�T k�rd�seket a TUD�ST�Rban illetik feltenni, K�L�N-K�LON!!!
abcd