PDA

Prikaži potpunu verziju : MS SQL Server + Delphi


J0van
16.7.2011, 15:11
Pozdrav svima,

da li neko ima iskustva u radu sa ova dva alata i pisanju aplikacije u Delphiju za rad sa MS SQL Server bazom podataka? Pokušao sam da pronađem neka uputstva, ali mi za sad nije pošlo za rukom.

Hvala.

Lucic Nemanja
17.7.2011, 17:12
Imam ja,reci sta ti treba. :)

J0van
18.7.2011, 15:25
Е, цар си. Хвала ти што се јављаш.

Ок, прво сам у Management studio направио нову базу и у оквиру ње једну табелу. Хтео сам да у Delphiju направим апликацију која ће комуницирати са том табелом, и извршавати основне операције као што су додавање, брисање и ажурирање. То сам и успео користећи ADOConnection, ADOTable, DataSource.

Е сад, кад сам креирао везу са базом у ADOConnection, пошто сам изабрао Build, у првом дијалогу сам одамрао Microsoft SQL Server, a другом сам одабрао из падајућег менија ту своју базу што сам креирао.
Е сад, вероватно је глупо питање, али није ми јасно како се та база ту појавила? Како Delphi зна где је она?

Још ме занима, и да ли могу ту базу да пошаљем некако? То мислим да је неки .mdf фајл. Покушао сам, али нисам могао јер је "била у употреби од неке друге апликације или корисника". Ни остале базе које су дошле уз MS SQL Server нису могле да се копирају, уз исту поруку.

Хвала.

irreal
18.7.2011, 18:53
Ne znam da li si upucen, ali ADO je srednji sloj izmedju baze i tvoje aplikacije.

Tvoja aplikacija komunicira sa ADO a ADO sa samom bazom.
Prednost ovoga je sto kada ovako napises aplikaciju, isti kod bez ikakvih promena (osim u kreiranju konekcije, razume se) moze da radi sa bilo kojom bazom koja ima ADO drajver.

Ako pises aplikaciju sa idejom da joj omogucis da radi na vise razlicitih baza, to je dobro resenje.

negativna strana je naravno sto pored same baze, mora biti instaliran i ADO drajver za istu.


Dalje, sto se tice tvojih pitanja: "Kako delphi zna gde je ona?"
Koristi SQL Server-ov discovery API.

Taj api sluzi pre svega da pronadje sve dostupne SQL servere (lokalno i na mrezi) a zatim i za konkretan server da izlista sve instalirane baze.

Koristeci informacije koje je dobio ovim putem i one koje si ti uneo (username, password) kreirao je ADO konekciju.

mogao si ado konekciju da kreiras i rucno, naravno, navodeci sam parametre za lokaciju servera i ime baze na istom (kao i username i password za pristup i eventualno jos drugih detalja)


Bazu mozes da posaljes, naravno.
Bazu ti prijavljuje da je u upotrebi jer je SQL server stalno podignut (kao servis, u pozadini) i drzi LOCK na tom fajlu.

Da bi skinuo lock sa fajla potrebno je ili da ubijes ceo sql server servis, ili, lakse, da iz management studija kliknes na bazu i odaberes iz menija opciju "take offline" sto ce je privremeno iskljuciti.

Medjutim, nema potrebe da skidas lock sa fajla ili uopste direktno pristupas SQL server-ovim fajlovima, kopiras ih i menjas i slicno.

"pravilan" nacin da nekome posaljes bazu je da napravis njen backup.
takodje iz management studija pronadjes opciju za backup baze, dodelis ime backupa, podesis "full backup" i kreiras novi media set.

zatim ces dobiti jedan fajl koji neko drugi (ili ti na drugoj masini) moze lako da uvuce u svoju instancu sql servera.

J0van
18.7.2011, 20:38
Хвала пуно на одговору, помогло ми је.