Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

DirectDB pristup ili DataSet pristup - za i protiv

[es] :: .NET :: DirectDB pristup ili DataSet pristup - za i protiv

[ Pregleda: 387 | Odgovora: 3 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

djalfirevic
Djuro Alfirevic
Beograd

Član broj: 76932
Poruke: 489
*.dynamic.sbb.rs.



Profil

icon DirectDB pristup ili DataSet pristup - za i protiv27.09.2008. u 14:52

Cao ljudi!

Imam jedno pitanjce vezano za metodologiju rada u C#-u sa bazom podataka.

Primer:
Access baza podataka ili SQL server, nije bitno, jedna tabela LICE (LiceID, Ime, Prezime, Telefon).

Projekat - C# - Windows Forms aplikacija. Na njoj naravno, tri labele i tri textBox-a za ime, prezime i telefon, i ispod jedan DataGrid koji prikazuje lica.

E sada, recimo Insert operacija...

1. Nacin - Kada povezem bazu podataka sa projektom i kada kreiram DataSet, kada ga otvorim, desni klic na njega, Add Query, napravim upit recimo INSERT INTO LICE (Ime, Prezime, Telefon) VALUES (?, ?, ?) i nazovem taj upit - dodajLice. Zatim u kodu kazem:

Code:

ImenikDataSetTableAdapters.QueriesTableAdapter upiti = new ImenikDataSetTableAdapters.QueriesTableAdapter();
int rezultat = upiti.dodajLice(textBoxIme.Text, textBoxPrezime.Text, textBoxTelefon.Telefon);
if (rezultat > 0)
{
MessageBox.Show("Uspesno ste uneli lice.");
}


Ovaj kod radi sve ok, lice se doda, i nakon toga, negde u kodu stavim:

Code:

this.imenikTableAdapter.Fill(this.ImenikDataSet.Lice);


Ovom poslednjom linijom sam prakticno uradio Refresh i nakon toga se podatak automatski prikazuje u DataGrid-u.

2. Nacin - koriscenje DataSet-a

Code:

ImenikDataSet.LiceRow novoLice = imenikDataSet.Lice.NewLiceRow();
novoLice.Ime = textBoxIme.Text;
novoLice.Prezime = textBoxPrezime.Text;
novoLice.Telefon = textBoxTelefon.Text;

imenikDataSet.Lice.AddLiceRow(novoLice);
liceTableAdapter.Update(imenikDataSet.Lice);


Kada se izvrsi ovaj kod, takodje se odradi refresh, i podatak se prikaze u DataGrid-u.

Pitanja:
1. Da li se u ovom drugom slucaju. podatak posle Update metode replicirao iz DataSet-a u bazu, ili posle AddLiceRow metode?
2. Kakve su prednosti prvog, DirectDB pristupa, gde se podaci direktno upisuju u bazu, bez koriscenja DataSet-a, a koje su prednosti drugog?
3. Ima li generalno nekih pravila kada treba koristiti jedan ili drugi pristup?
4. Da li postoji mozda jos neki pristup? (jednom sam samo nesto kratko citao o bindingSource.AddNew(), pa onda ide ono AcceptChanges(), EndEdit() itd itd, no nisam bas detaljno to razmatrao).
5. Za prvi pristup sam dobio kritike, da je problem sto se koristi Fill, taj sto ako baza ima milion slogova, onda nastaje problem po pitanju brzine, tj. nije bas optimizovano resenje.
6. Neko kaze da treba sve drzati u DataSet-u, pa tek na kraju rada replicirati podatke u bazu podataka?!? Sta ako, lupam nestane struje u toku rada? Sta ako neko trazi da podigne sa racuna 1000e, prethodno ih je potrosio ali taj podatak nije repliciran u bazu, coveku se izda 1000e, a na kraju se ispostavi da nije trebalo da mu se izdaju pare?
7. Ima li neki od pristupa losu osobinu zbog zakljucavanja slogova?

Izvinjavam se sto sam napisao kratku novelu, ali naidjoh na ovaj problem, pa reko u startu da ga pokusam resiti.
27.09.2008. u 14:52 

deerbeer
Beograd

Član broj: 174418
Poruke: 687
*.adsl-a-1.sezampro.yu.



Profil

icon Re: DirectDB pristup ili DataSet pristup - za i protiv27.09.2008. u 16:26
Citat:

Pitanja:
1. Da li se u ovom drugom slucaju. podatak posle Update metode replicirao iz DataSet-a u bazu, ili posle AddLiceRow metode?
2. Kakve su prednosti prvog, DirectDB pristupa, gde se podaci direktno upisuju u bazu, bez koriscenja DataSet-a, a koje su prednosti drugog?
3. Ima li generalno nekih pravila kada treba koristiti jedan ili drugi pristup?
4. Da li postoji mozda jos neki pristup? (jednom sam samo nesto kratko citao o bindingSource.AddNew(), pa onda ide ono AcceptChanges(), EndEdit() itd itd, no nisam bas detaljno to razmatrao).
5. Za prvi pristup sam dobio kritike, da je problem sto se koristi Fill, taj sto ako baza ima milion slogova, onda nastaje problem po pitanju brzine, tj. nije bas optimizovano resenje.
6. Neko kaze da treba sve drzati u DataSet-u, pa tek na kraju rada replicirati podatke u bazu podataka?!? Sta ako, lupam nestane struje u toku rada? Sta ako neko trazi da podigne sa racuna 1000e, prethodno ih je potrosio ali taj podatak nije repliciran u bazu, coveku se izda 1000e, a na kraju se ispostavi da nije trebalo da mu se izdaju pare?
7. Ima li neki od pristupa losu osobinu zbog zakljucavanja slogova?


1.) Update radi upis u bazu a AddLiceRow upis novog reda u dataset
2.) Sve zavisi od slucaja. Dataset pristup je bolji jer mozes lako da ponistis unos podataka ili izmene
tj. rollback a da ne koristis transakcionu kontrolu baze podataka ,ako je u pitanju neka komplikovana forma gde se menja vise redova,tabela itd ..
Kad se uradi neki submit ili save svi izmenjeni podaci se odjednom upisuju u bazu ..
3.) Direktan pristup je ok za jednostavne inserte update i delete komande
4.) AcceptChanges i RejectChanges kao i BeginEdit i EndEdit kontrolisu tvoj unos i izmene u datasetu.
5.) Pa nikad neces puniti dataset sa milion redova (problem je takodje i memorija) jer uvek pre toga filtriras podatke,
tj. uvek ogranicis korisnika na neki skup podataka sa kojim radi .





grunge forever
27.09.2008. u 16:26 

djalfirevic
Djuro Alfirevic
Beograd

Član broj: 76932
Poruke: 489
*.dynamic.sbb.rs.



Profil

icon Re: DirectDB pristup ili DataSet pristup - za i protiv27.09.2008. u 16:48
Hvala deerbeer.

Dosta stvari si mi pojasnio...

Dakle, generalno, ne treba se pridrzavati jednog pristupa uvek i apsolutno, vec u zavisnosti od kompleksnosti upita koji se izvrsava.

Da li si mozda nailazio na slican topic u nekim drugim forumima ili nesto sl.? Mozda neki clanak?
27.09.2008. u 16:48 

deerbeer
Beograd

Član broj: 174418
Poruke: 687
*.adsl-a-1.sezampro.yu.



Profil

icon Re: DirectDB pristup ili DataSet pristup - za i protiv28.09.2008. u 00:20
Pa imas dosta diskusija i clanaka na tu temu na webu a i na ovom forumu :
http://msdn.microsoft.com/en-us/magazine/cc301606.aspx
http://www.simple-talk.com/dot...-to-make-intelligent-datasets/

LINQ :
http://blogs.msdn.com/data/arc...ft-s-data-access-strategy.aspx
http://www.codeproject.com/KB/linq/TypedDataSetLinqEntities.aspx
Godinama unazad i kroz ADO.NET i kroz najnoviji LINQ Microsoft se trudi da programerima logiku Database Bussines Layera sto vise preseli
iz klasicnog proceduralnog SQL programiranja u OOP svet C# i VB.net-a,
sto iz sintakse LINQ-a se lako vidi .
Koliko se toga treba pridrzavati je onako suptilno pitanje koje uvek sebi postavis pre nego sto krenes na zadatak :)







grunge forever
28.09.2008. u 00:20 

[es] :: .NET :: DirectDB pristup ili DataSet pristup - za i protiv

[ Pregleda: 387 | Odgovora: 3 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.