|
[ IDE @ 08.10.2005. 18:23 ] @
|
e ovako,
interesuje me ljedece:
citao sam da se u Borland C++ Builder-u (kao i u mnogim drugim jezicima) mogu koristiti SQL upiti za rad sa bazama podataka.Ja posjedujem odredjeno znanje iz SQL-a, ali na ovaj nacin (iz aplikacije napravljene u BCB-u) nisam nikada komunicirao sa bazom podataka...
mislim da je ovo tema koja interesuje veliki broj ljudi, pa vjerovatno govorim i u njihovo ime kada kazem da bi bilo super kada bi neko ko poznaje ovu materiju napravio jedan konkretan primjer sa nekom bazom podataka...
ne trazim nista veliko, neka to bude neka aplikacija koja SQL upitima komunicira npr. sa oracle-ovom bazom podataka pod imenom "test", (moze i neka druga-licno sam radio upite na ovoj bazi, a cuo sam da se i sami upiti po malo razlikuju na svakoj sljedecoj bazi...) koja ima tabelu koja se zove "covjek" i koja ima samo atribute IME CHAR(10) i BROJ_GODINA NUMBER(2) npr.
a sama aplikacija npr. neka ima makar dva dugmeta:
-jedno za npr. unos zapisa iz Edit1 i Edit2 (u pitanju su dodavanje novog imena i broja godina, respektivno, znaci:npr. insert into covjek values ('goran',35); )
-i drugo dugme za izlistavanje tabele (select * from covjek;)
ako zelite dodati jos po nesto (npr. update covjek set ime=... ili alter table covjek modify(ime char(15)) ali samo da bude neka od osnovnih)-OK, ali molim objasnjenje svega dodatnog u kodu...
i na kraju: bilo bi fino da stavite citav sors ili projekat ovdje....
evo, ispricah se, tekst jeste veliki, ali ako obratite paznju vidjecete da je zadatak u stvari jednostavan i kratak...
ako bi mi neko pomogao u vezi ovoga, ucinio bi meni a i MNOGIMA drugima veeliku uslugu...
unaprijed hvala...
|
[ Toxter @ 09.10.2005. 00:57 ] @
E, ovako: Borland C++ Builder nije programski jezik vec alat za programiranje koriscenjem C++ jezika... ;)
A sto se tice povezivanja sa Bazom Podataka probaj sa ADO komponentama.
Dolaze standardno uz Builder.
Imas ADOConnection, ADODataset, ADOTable,...
Jednostavno uzmes, prevuces je na formu, u propertijima podesis ono sto treba (npr. ConnectionString imas i Build opciju).
Tu mozes i da postavis inicijalne SQL upite.
Zatim dodas neko dugme na formu pa na njegov OnClick dodas malo koda (recimo neki SELECT iskaz).
I tako dalje i tako redom...
Pozdrav.
[ X Files @ 09.10.2005. 09:26 ] @
Baratanje bazama podataka u Borland C++ Builder-u nije tesko, ali ipak zahteva
dosta sitnica koje prethodno treba poznavati, kako sto se tice DB sistema uopste
tako i podesavanja u samom okruzenju (izbor i podesavanje komponenti).
Dakle, potrebno je vreme (a vreme je novac :), koje ja sada nemam da bih napisao
neki tutorijal o tome.
Borland C++ Builder (u sebi) ima dva nacina za povezivanje sa bazama podataka
(InterBase necu pominjati ovom prilikom... to je potpuno drugi pristup):
1) BDE (TDatabase, TTable, TQuery, ...)
2) ADO (TADOConnection, TADOTable, TADOQuery, ...)
Izaberi ADO (a BDE uopste i ne gledaj - moj savet).
Sledece palete komponenti koje su ti od interesa su: DataAccess i DataControls.
Kod DataAccess-a za sada bi ti 'DataSource' komponenta trebala biti od interesa,
a kod DataControls sve komponente (to su zapravo JEDINE VIZUELNE
KOMPONENTE). Dakle, te zadnje (vizuelne) komponente su zaduzene za baratanje
podacima, a sve ovo ostalo je iza scene i krajnji korisnik ne bi trebalo da ima pojma
da li radi sa ADO, BDE, InterBase, MS ACCESS ili ORACLE bazom
Takodje, za pocetak ti savetujem da napravis neku MS ACCESS bazu (*.mdb) i da
probas da se konektujes na nju (za sada zaboravi ORACLE)...
Dakle treba ti:
- jedan TADOConnection (da podesis putanju i parametre za konekciju sa *. MDB)
(treba podesiti ConnectionString, sa OLE JET4.0 Provider-om, Login Prompt, ...)
- po jedan TADOTable ili TADOQury (ako hoces SQL) za povezivanje sa svakom
tabelom unutar baze.
(TADOQuery je mocniji samim time sto ima u sebi SQL, ...)
- po jedan TDataSource za svaki TADOTable ili TADOQuery.
(Veza izmedju TADOTable/TADOQuery i tvojih vizuelnih kontrola)
- recimo, jedan TDBGrid u kome mozes videti redove
- jedan TDBNavigator za navigaciju zapisima.
Dalje, postoji ceo sijaset dogadjaja koje treba uhvatiti:Hvatanje gresaka, ...
itd...
[ IDE @ 09.10.2005. 11:42 ] @
@Toxter:
znam da builder nije programski jezik vec samo alat... ;-)
nije bas ono sto sam htio, ali hvala vam na odgovorima...
[ X Files @ 09.10.2005. 14:22 ] @
Voodoo, bez ljutnje, to sto trazis zahteva *dosta* vremena. Da se odradi, nije
narocito tesko - ali da se to predstavi u pisanom obliku, i to za pocetnicki nivo -
treba neko da odvoji CEO dan... Klikni ovde, klikni onde, startuj ovo, startuj ono,
usput objasnjavati neke vaznije koncepte DB-a, i sve to staviti u tekst...
Veruj mi, kada bi to postavio na nekom stranim forumu, ladno bi te isCOOLirali,
jer oni svoje VREME cene vise nego mi. I ja sam u pocetku na stranim forumima
pravio identicne greske - niko mi nije odgovarao, a onda sam problem (pitanja)
razlagao korak po korak...
Evo, ako imas volje, za pocetak PROJEKTUJ BAZU podataka, pa cemo sledeci put
ostalo.
Ovako:
Tabela1 (Glavna): ID, Ime, Godiste, Zanimanje
Tabela2 (Zanimanja): Zanimanje
Namerno sam stavio dve tabele da bih postavio vezu preko zanimanja.
Koraci:
PRIPREMA PROJEKTA
=================
1) Napravi na Desktop-u novi folder: DBTest
PRIPREMANJE BAZE
================
2) Otvori MS ACCESS
3) File / New / Blank database ...
4) Save in: Desktop\DBTest\
5) File name: test.mdb
6) Create ...
7) dupli klik: Create table in Design View
Prozor Table1 : Table
---------------------
8) U kolonu: 'Field Name' upisi 'Zanimanje' (bez navodnika)
9) U kolonu: 'Data Type' izaberi 'Text'
A dole, sekcija 'General':
10) Field Size = 50
11) Required = Yes
12) Allow zero length = No
13) Indexed = Yes (No duplicates)
14) Zatim obelezi ceo taj red (Zanimanje | Text),
desni taster misa: Primary key
Zatim, u glavnom meniju:
15) File / Save / Save As : TblZanimanja (umesto Table1)
16) Zatvori prozor: TblZanimanja
Zatim predji na prozor: test : database (Access 2000 file format)
17) dupli klik: Create table in Design View
Prozor Table1 : Table
---------------------
18) U kolonu: 'Field Name' upisi 'ID' (bez navodnika)
19) U kolonu: 'Data Type' izaberi 'Number'
20) U kolonu: 'Field Name' upisi 'Ime' (bez navodnika)
21) U kolonu: 'Data Type' izaberi 'Text'
A dole, sekcija 'General':
22) Field Size = 50
23) Required = Yes
24) Allow zero length = No
25) U kolonu: 'Field Name' upisi 'Godiste' (bez navodnika)
26) U kolonu: 'Data Type' izaberi 'Number'
A dole, sekcija 'General':
27) Required = Yes
28) U kolonu: 'Field Name' upisi 'Zanimanje' (bez navodnika)
29) U kolonu: 'Data Type' izaberi 'Text'
A dole, sekcija 'General':
30) Required = Yes
31) Zatim obelezi ceo red (ID | Number), pa
desni taster misa: Primary key
Zatim, u glavnom meniju:
32) File / Save / Save As : TblGlavna (umesto Table1)
33) Zatvori prozor: TblGlavna
Referencijalni integriteti
--------------------------
34) Glavni meni: Tools / Relationships...
35) Obelezi obe tabele (TblGlavna i TblZanimanja)
36) Add
37) Close
Tabele ces videti u prozoru Relationships
38) Obelezi: Zanimanje u TblZanimanje i prevuci misem
na Zanimanje u TblGlavna. Dobices novi dijalog.
39) Cekiraj: Enforce referential integrity
40) Cekiraj: Cascade Update Related Fields
41) NEMOJ CEKIRATI: Cascade Delete Related Fields
42) Snimi / Izadji
43 ) ZATVORI CEO ACCESS
Upisi neke lazne podatke
------------------------
100) Otvori ponovo test.mdb (duplim klikom u Desktop/DBTest)
101) Dupli klik na TblZanimanja
102) Ukucaj tri kolone podataka:
Lekar
Pekar
Apotekar
[ IDE @ 09.10.2005. 18:48 ] @
x files, sada se JA zaista izvinjavam!!!
ono sto sam rekao zadnje zaista nije trebalo da zvuci kako je vjerovatno zvucalo!!!
ali stvarno!!
stvarno sam se zahvalio na odgovorima jer sam shvatio kroz tvoj odgovor da ovo zaista zauzima dosta vremena, i daleko da sam se ja nesto naljutio ili tome slicno...
ovo sto si ti u zadnjem odgovoru odradio i koliko si ispisao, a sve da bi nekome pomogao , je stvarno za svaku pohvalu....
svakako da cu CIM STIGNEM (ispiti, je*iga...) odraditi ovo sto si mi napisao i ako negdje zakoci-postovati ovdje, ali cu takodje otici i malo gnjaviti ljude koji su za to placeni - moje profesore...
a ovo za razlaganje problema si u pravu...ali sto cu...htio sam samo na najosnovnijem primjeru da vidim kako to sve radi, da bi kasnije sve SAM polako shvatao i upotpunjavao....
ponovo: hvala!!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|