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:
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:
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
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.






DirectDB pristup ili DataSet pristup - za i protiv