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

ADO.NET i izdavanje racuna

[es] :: .NET :: ADO.NET i izdavanje racuna

Strane: 1 2 3

[ Pregleda: 8060 | Odgovora: 42 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: ADO.NET i izdavanje racuna14.01.2009. u 13:34 - pre 186 meseci
Citat:
Pharos: A što za ID ne koristite GUID, a za "govoreće" šifre (broj računa) drugo polje tipa string/int?
Zatim, zar nije jako loše rešenje koristiti auto increment polja u bazi?


Ako se import radi kroz replikaciju postoje mehanizmi za sinhronizaciju kljuceva (sto je inace jos jedan razlog zasto ne koristiti ID za broj racuna). GUID to resava univerzalno ali ja npr izbegavam koriscenje GUIDa sem kad je apsolutno neophodno zbog performansi joina i svih ostalih operacija jacih od O(1). Kad poredis dva GUIDa za join poredis dva 16-bajtna bloba koji nisu prilagodjeni arhitekturi danasnjih procesora, u principu GUID kljuc ima iste performanse kao char(16) kljuc. Sa druge int kljuc je 32bita i poredjenje moze da se obavi kompletno registarski. Kad i koristim GUID to je za tabele kroz koje cetokom zivota aplikacije proci vise od 2^31 redova.
Auto increment je veoma optimizovan i skalira se lepo po svim transaction izolacijama i lock granulaciji i keygen radi direktno iz memorije servera bez potrebe za dodatnim validacijama. Zbog toga inace i nastaju rupe (ako rollbackujes transakciju ID counter se ne rollbackuje jer je sledeci kljuc mozda vec izdat drugom procesu, SQL6.5 je imao ovaj bug vracao je counter unazad na rollbacku, ali je reseno u 7.0).

Na kraju GUID nije univerzalno jedinstven, samo je statisticki veoma veoma mala sansa da se pojave duplikati. To su nekad govorili i za JMBG

Citat:
Astek: 2. Zatim snimim racun(u tu svrhu koristim SP koja mi kao output parametar vrati ID preko @@identyti)

Moja preporuka ti je da koristis SCOPE_IDENTITY() umesto @@identity. Ako neko nekad zakaci insert trigger na tvoju tabelu (npr zbog audita) i taj triger insertuje neki red negde drudge, @@identity ce se pormeniti na ID iz te druge tabele, dok ce SCOPE_IDENTITY() i dalje ostati postavljen na tvoj novi ID.


Citat:
mkaras: Čini mi se da baš i ne razumeš to što pišeš jer pišeš o stvarima o kojima niko nije ni pričao. Ta "opsesija" je nekada srž problema i mora se ispoštovati. Dobro si rekao da osnovna svrha ID nije nošenje korisničkih informacija pa ze za takve stvari i ne koristi i niko nije rekao da mora da postoji kontinualnost ID-jeva, ali zato mora da postoji kontinualnost brojeva računa u fiskalnoj kasi, kontinualnost brojeva serije čekova koji se izdaju, kontinualnost serijskih brojeva karata za neki koncert, voz, ringišpil, ... A ako znaš da napišeš funkciju onda možeš na kartama da štampaš broj reda i sedišta, ili broj vagona, kupea i sedišta, i da širimo dalje. Postoji veoma mnogo prilika kada je taj tvoj ID nekoristan za sve osim za povezivanje tabela


Ta opsesija nikad nije srz problema i uvek postoji bolje resenje od koriscenja rucno generisanih kljuceva u tu svrhu i ne mora se uvek ispostovati. A i ton ti nije prilagodjen kao ni opaska, bar da ne radim consulting u bankarskom sektoru pa da ti i poverujem. Serijske brojeve na cekovima ne generise banka u konkurentskom rezimu, serijske brojeve cekova generise stampar istih (u nasem slucaju zavod za izradu novcanica), banka te cekove duzi i razduzuje svojim klijentima a po vec odstampanim serijskim brojevima. Sta vise "rupe" u brojnom sistemu cekova su relativno cesta pojava (kad banka komisijski unisti ili vrati stamparu neispravno odstampane cekove pre zaduzivanja, ti brojevi se vise ne koriste i niko nece njima biti zaduzen). Ista prica vazi i za koncertne karte i za karte za voz i za skoro sve ostale sisteme, tako da nista od ovoga nema veze sa ovom raspravom.

Za fisklani racun stvarno ne znam, ali sve i da mora da bude sekvencijalan on to mora biti na nivou fiskalne kase tako da opet nemas nikakav concurrency i ne trebaju ti nikakvi lockovi. Neverovatno je koliko aplikacija funkcionise suboptimalno zbog resavanja svih problema upotrebom pesimistickog lock-a i gde mora i gde ne mora, to sto zablokiras celu firmu dok ti odsviras svoju skrpiticu to nije vazno, radi super na testiranju. Bar da je zbog necega nego zbog generisanja kljuceva i izmisljanja tople vode.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mkaras
Marko Karas
Beograd

Član broj: 66087
Poruke: 427



+19 Profil

icon Re: ADO.NET i izdavanje racuna14.01.2009. u 15:04 - pre 186 meseci
Citat:
mmix: Ta opsesija nikad nije srz problema i uvek postoji bolje resenje od koriscenja rucno generisanih kljuceva u tu svrhu i ne mora se uvek ispostovati. A i ton ti nije prilagodjen kao ni opaska, bar da ne radim consulting u bankarskom sektoru pa da ti i poverujem. Serijske brojeve na cekovima ne generise banka u konkurentskom rezimu, serijske brojeve cekova generise stampar istih (u nasem slucaju zavod za izradu novcanica), banka te cekove duzi i razduzuje svojim klijentima a po vec odstampanim serijskim brojevima. Sta vise "rupe" u brojnom sistemu cekova su relativno cesta pojava (kad banka komisijski unisti ili vrati stamparu neispravno odstampane cekove pre zaduzivanja, ti brojevi se vise ne koriste i niko nece njima biti zaduzen). Ista prica vazi i za koncertne karte i za karte za voz i za skoro sve ostale sisteme, tako da nista od ovoga nema veze sa ovom raspravom.

Za fisklani racun stvarno ne znam, ali sve i da mora da bude sekvencijalan on to mora biti na nivou fiskalne kase tako da opet nemas nikakav concurrency i ne trebaju ti nikakvi lockovi. Neverovatno je koliko aplikacija funkcionise suboptimalno zbog resavanja svih problema upotrebom pesimistickog lock-a i gde mora i gde ne mora, to sto zablokiras celu firmu dok ti odsviras svoju skrpiticu to nije vazno, radi super na testiranju. Bar da je zbog necega nego zbog generisanja kljuceva i izmisljanja tople vode.


Ti i dalje pričaš jednu te istu priču koja nema ni malo dodira sa istinom. Niko nije rekao da se koriste ručno generisani ključevi.

Reč je samo o nekim podacima koji se štampaju na izveštajima i koji moraju da budu poređani u nekom redosledu. Ne verujem baš da organizator koncerta proglasi neke karte nevažećim zato što štampar nije štampao karte za određeni red i sedište.

A šta misliš kako štampar štampa te tvoje čekove, karte i sve ostalo? Ima samo jednu mašinu i nigde ne vodi evidenciju onoga što je štampao. Kako on generiše sve te podatke koje ispisuje.

I dalje tvrdim da površno čitaš postove jer da nije tako shvatio bi da se tabela "generisanih ključeva" zaključava na jedan veoma, veoma kratak trenutak dok se ne pokupi kluč. Poenta sistema i jeste u tome da sve vreme tabele mogu da koriste svi korisnici i da se zaključavanje vrši samo u jedom veoma kratkom trenutku kada se uzima broj "računa" jer je to jedini način da se dobije jedinstven podatak, a "rupe" se rešavaju tako što se uzimanje ključa obavlja samo u momentu upisa u bazu. Tako da to sa tvojim sviranjima skriptica i blokiranjem celog sistema nema nikakvih dodirnih tačaka. A pričao si o nekom prilagođenom tonu !?

I da ponovim još jednom, ovo o čemu pričam nisam ja izmislio (sujeta je gadna stvar) pa se time i ne hvalim. Ovaj sistem godinama primenjujem i do sada sam veoma zahvalan gospodinu Whil Hentzen-u i njegovoj knjizi Visual FoxPro 3.0 koja me je naučila mnogim stvarima. Tu su još i grupa autora Paul Litwin, Ken Getz, Mike Gunderloy sa njihovom knjigom Access 2002 za programere. I zamisli, svi oni za neke slučajeve preporučuju baš rešenje koje sam ja pokušao da približim pokretaču teme.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: ADO.NET i izdavanje racuna14.01.2009. u 19:01 - pre 186 meseci
Citat:
mkaras: Ti i dalje pričaš jednu te istu priču koja nema ni malo dodira sa istinom. Niko nije rekao da se koriste ručno generisani ključevi.


Mi smo ovde pricali o ID-u racuna, na sta si se ti nadovazeo sa citiram: "Formiram tabelu u kojoj čuvam prvi sledeći broj računa, ..., Započnem transakciju, zaključam tabelu u kojoj čuvam sledeći broj računa". Ako nisi mislio na kljuc onda si ti povrsno procitao temu.

Citat:
mkaras: Reč je samo o nekim podacima koji se štampaju na izveštajima i koji moraju da budu poređani u nekom redosledu. Ne verujem baš da organizator koncerta proglasi neke karte nevažećim zato što štampar nije štampao karte za određeni red i sedište.
A šta misliš kako štampar štampa te tvoje čekove, karte i sve ostalo? Ima samo jednu mašinu i nigde ne vodi evidenciju onoga što je štampao. Kako on generiše sve te podatke koje ispisuje.

<cinizam>Da, siguran sam da organizator koncerta prodaje neispravno odstampane karte (npr one na kojim se vidi samo serijski broj) da ne bi kojim slucajem preskocio broj, a i obezbedjenju se nalozi da ljude sa takvim kartama puste na koncert pa posle svi zajedno sa mrmotom zamotaju cokoladu. A i ti stampari cekova oni isto imaju 1001og radnika koji klikcu jedno dugme na formi ceo dan i takmice se ko ce pre da dobije sledeci broj da bi na svom super stampacu odstampao cek, pa se onda posle skupe svi zajedno pa ih rucno sortiraju uz kaficu. </cinizam>
U single-user sistemima u kojima nema konkurencije za isti resurs nema ni nikakve potrebe za kontrolom iste, optimistic ili pessimistic.

Citat:
mkaras: I dalje tvrdim da površno čitaš postove jer da nije tako shvatio bi da se tabela "generisanih ključeva" zaključava na jedan veoma, veoma kratak trenutak dok se ne pokupi kluč

A koliko je dug taj veoma veoma kratak trenutak? 1ms, 300ms, sekund? I koliko ce biti dug ako se u tabelu brojaca doda jos jedan brojac za neku drugu tabelu pa se insert procedura te druge tabele "posvadja" sa tvojom oko locka nad counter tabelom? Pa onda usred toga krene i batch import process? Pa na kraju promena poslovnog procesa dovede do promene te druge insert procedura koja sad prvo insertuje u prvu tabelu pa sve ovo preraste u deadlock i pukne? Naravno ne tokom testiranja posto je to nepotrebno, vec kad to sve udje u produkciju.
Nevazno je koliko je dug table X-lock, neka je i 5 nanosekundi, i to je mnogo kad nije neophodno a nije, i to je aspekt koji tebi promice. I mislim da jesam merodavan da dam sud o tome posle vise desetina aplikacija koje sam rewrite-ovao nakon sto je program poceo da posustaje sa 1000, 500 ili cak desetak korisnika zbog lose organizovanih transakcija koje se ne skaliraju lepo sa brojem korisnika; genijalni autori istih naravno nikad nisu ni probali da urade bilo kakav stress testing.
Nikad ne treba uzimati vise resursa nego sto ti je minimalno neophodno da zavrsis odredjeni zadatak bez obzira na to sta pravis i koliko trenutno korisnika to koristi.

Citat:
mkaras:I da ponovim još jednom, ovo o čemu pričam nisam ja izmislio (sujeta je gadna stvar) pa se time i ne hvalim. Ovaj sistem godinama primenjujem i do sada sam veoma zahvalan gospodinu Whil Hentzen-u i njegovoj knjizi Visual FoxPro 3.0 koja me je naučila mnogim stvarima. Tu su još i grupa autora Paul Litwin, Ken Getz, Mike Gunderloy sa njihovom knjigom Access 2002 za programere. I zamisli, svi oni za neke slučajeve preporučuju baš rešenje koje sam ja pokušao da približim pokretaču teme.


No comment. Ti hoces da pricas o dobrim i losim stvarima u concurrency control mehanizmima na SQL serveru a kao teroijsku podlogu donosis FoxPro i Access? Eto perun85, batali SQL server i autoincrement, predji na FoxPro.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mkaras
Marko Karas
Beograd

Član broj: 66087
Poruke: 427



+19 Profil

icon Re: ADO.NET i izdavanje racuna14.01.2009. u 20:30 - pre 186 meseci
Ti i dalje dokazuješ neku vajnu kompetentnost. Daj, molim te, u Pančevu, reci koja to banka ima aplikaciju sa više stotina klijenata, da ne pričam o onoj hiljadarki klijenata koju si pomenuo. I koje si ti tolike aplikacije

I dalje ne čitaš postove, nigde niko nije pomenuo SQL server osim, naravno, samo ti.

Cinizam ti nije na mestu. Bolje uzmi malo literature i pročitaj. Možda ćeš tada i saznati, ali i shvatiti zbog čega, da se jedna tabela ne koristi za više ključeva već samo za jedan jedini.

To što sam pomenuo knjige o Fox-u i Access-u to je samo zato što su mi bile pri ruci. Ali ako se malo potrudiš, nešto slično ćeš naći i u literaturi za Oracle pa čak i za MS SQL server.
 
Odgovor na temu

Astek
Marković Darko
Beograd

Član broj: 128308
Poruke: 160
*.cat-net.rs.



+1 Profil

icon Re: ADO.NET i izdavanje racuna14.01.2009. u 21:10 - pre 186 meseci
mmix,
zaista nisam znao ovo za SCOPE_IDENTITY() . Blagodarim.

Ja sam takođe mislio da je ovde priča o Sql serveru.

 
Odgovor na temu

perun85
Republika Srpska

Član broj: 185562
Poruke: 116
79.143.175.*



Profil

icon Re: ADO.NET i izdavanje racuna14.01.2009. u 21:37 - pre 186 meseci
Ja sam zaboravio da pomenem da koristim SQL Server 2005 Express. Aplikacija koju radim nece nikada biti koristena u realnom okruzenju, radim je cisto da bih bolje upoznao mogucnosti .NETa u radu sa bazama. Iz tog razloga ne zelim da koristim workaround metode, nego samo ciste mehanizme koje pruza sam ADO.NET. Posto on nema podrsku za klasicnipessimistic concurrency od toga sam u samom startu odustao.

Licno smatram da se vicina aplikacija bez obzira na to sta rade mogu prilagoditi optimistic concurrency modelu pristupa. Odmah da priznam da ovo ne govorim iz nekog velikog iskustva, ali ukoliko je Microsoft odlucio da usvoji ovaj nacin pristupa u svojoj tehnologiji koja je uglavnom namenjena izradi poslovnih aplikacija, skoro je sigurno da se pomocu dobrog algoritma i optimistic modela moze uspesno resiti 98% scenarija u aplikacijama.
 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
..et.174.106.194.in-addr.arpa.



+2 Profil

icon Re: ADO.NET i izdavanje racuna15.01.2009. u 11:43 - pre 185 meseci
Citat:
mmix: Kad poredis dva GUIDa za join poredis dva 16-bajtna bloba koji nisu prilagodjeni arhitekturi danasnjih procesora, u principu GUID kljuc ima iste performanse kao char(16) kljuc. Sa druge int kljuc je 32bita i poredjenje moze da se obavi kompletno registarski.


Možeš li mi reći koliko ovo utiče na preformanse? Nisam imao prilike da radim sa velikim sistemima kao ti. Testirao sam sa stotinak hiljada redova podataka i performanse su gotovo identične za GUID i int. Bio bih ti veoma zahvalan da mi daš neka poređenja.

Citat:
mmix: Na kraju GUID nije univerzalno jedinstven, samo je statisticki veoma veoma mala sansa da se pojave duplikati.

Da li ti se ovo ikad desilo u produkciji?

Zahvaljujem se na odgovorima
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
77.222.25.*

Sajt: www.azalea-maritime.com


Profil

icon Re: ADO.NET i izdavanje racuna15.01.2009. u 14:18 - pre 185 meseci
Citat:
Pharos:Možeš li mi reći koliko ovo utiče na preformanse? Nisam imao prilike da radim sa velikim sistemima kao ti. Testirao sam sa stotinak hiljada redova podataka i performanse su gotovo identične za GUID i int. Bio bih ti veoma zahvalan da mi daš neka poređenja.


http://www.informit.com/articles/printerfriendly.aspx?p=25862

Što se drugog pitanja tiče: sjećam se MS kursa o administraciji SQL Server-a 7 gdje nam je predavač (Dragoslav Ogar) rekao da je imao slučaj ponavljanja GUID-a u praksi, što mu je bilo zapanjujuće - ali tako je bilo, i to u bazi podataka o spisku birača u tadašnjoj YU.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: ADO.NET i izdavanje racuna15.01.2009. u 14:57 - pre 185 meseci
Pretece me, ali generalno je ono sto pise u dokumentu relevantno, za jedan inner join sto smo mi testirali na 1mil redova uvezanih za 2 mil child redova kasnjenje je bilo oko 10%, s tim da je index scan imao mnogo vise read-ova za GUID nego za int (verovano zato sto manje kljuceva upadne u jedan page) pa dosta zavisi i od toga koliko je brz I/O (ipak smo mi testirali na zverini od servera sa 256Mb kesiranog RAID-a). Al mozes i sam to da testiras, milion redova se napravi ocas (samo ucini sebi uslugu i bazu kreiraj u simple recovery modu i indekse kreiraj na kraju ). Ono sto se sigurno secam je da smo radili i testiranje za varbinary(16) i varchar(16) kljuceve i da su rezultati bili identicni kao za GUID.


Ogar je verovatno dobio duplikat zato sto je GUID bio generisan negde na masini bez mrezne kartice u to doba (dok su V1 GUIDi bili aktuelni) a kljuc bio generisan u aplikativnom nivou umesto na serveru i potrefilo se vreme. Da bi se dobio duplikat V1 GUID-a potrebno je da se dese dve stvari, da mrezne kartice na kompovima imaju isu MAC adresu (sto nije iskljuceno ako se petlja sa istim) i ako se kljuc generise istog trenutka u multi-CPU sistemu, sto je mnogo verovatniji ishod. Jednostavno ne postoji nacin da server sam sekvencijalno generise koliziju na single CPU sistemu jer je granulacija V1 GUID-a 100ns.
Meni se npr nije desilo nijednom, a najveca GUID tabela sa kojom smo radili je imala oko 20 miliona redova (od nekih 100mil koji su prosli kroz nju) i medju tih 20 mil nije bilo duplikata (doduse ne secam se koja je bila verzija GUIDa), mada i ja znam te price da se ljudi kunu da se kolizije pojavljuju vec na 200-300 hiljada redova. Jedini nacina na koji ja vidim da se ovo desi je high volume insert na multi-CPU sistemu sa V1 GUID generacijom u aplikativnom nivou. Sa aktuelnim V4 GUIDima koji su "random" sanse za koliziju su stvarno astronomske. Mislim da je ova paranoja izazvala pojavljivanje NEWSEQUENTIALID() funkcije od SQL2005.

PS: Evo cisto fore radi sam napravio GUID tabelu i upucao milion redova u nju preko NEWID() i nije bilo kolizije i svi GUIDi su V4 a pustio sam dva paralelna querya da pumpaju insert i na Core2-ci sam.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
77.222.25.*

Sajt: www.azalea-maritime.com


Profil

icon Re: ADO.NET i izdavanje racuna15.01.2009. u 15:37 - pre 185 meseci
Ako se dobro sjećam, ali bilo je poodavno - radilo se o bazi koja je objedinila nekoliko drugih baza sa spiskom birača na republičkim nivoima gdje su generisani GUID-ovi. Kada su došli do cjelokupne baze - ispostavilo se ČAK da je više GUID-ova bilo jednako...

E, sad... ne pamtim detalje, niti sam potencirao da se objasne uslovi u kojima je ova situacija nastala, ali vjerujem čovjeku 100% i zaključak je bio jasan: GUID se može ponoviti, ne samo u teoriji, već i u praksi...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: ADO.NET i izdavanje racuna15.01.2009. u 16:50 - pre 185 meseci
Ma ne sumnjam ja da je on dobio duplikat, Ogara znam odavno i znam da sigurno ne bi izmislio takvo nesto niti je to sto je rekao za riplija. COM je stariji od masovnog koriscenja LAN-ova i nije retkost bila programer koji kreira GUID-e za COM objekte na masini bez NIC-a i duplikati CLSID/IID-eva su bili konstantan problem u to vreme i samim tim nije za neverovanje dupli GUID u SQL tabelama. Ali to je bilo nekad i to je bilo samo zbog formata V1 GUID-a koji se vise ne koristi u praksi.
Za V4 koji jeste u upotrebi danas bazna verovatnoca je 1 prema 2^122 (1.9e-37) da ces generisati isti GUID globalno. U okviru istog domena, npr tabele, cak i da ista ima milijardu redova sansa za pojavljivanje jedne jedine kolizije je i dalje za prakticnu primenu dovoljno blizu 0%. A kome je i taj rizik neprihvatljiv moze da koristi NEWSEQUENTIALID(). Tako da na stranu performance penalty upotrebe GUID-a mogucnost duplikata stvarno vise nije prepreka.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
82.117.195.*

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: ADO.NET i izdavanje racuna16.01.2009. u 13:18 - pre 185 meseci
@perun85

Ako sam dobro skontao, pitanje je (izmedju ostalih ) kako da xsd vrati SCOPE_IDENTITY() proveri http://forums.asp.net/t/990365.aspx.

Happy coding

P.S.
Citat:
mmix: ...koji klikcu jedno dugme na formi ceo dan i takmice se ko ce pre da dobije sledeci broj da bi na svom super stampacu odstampao cek, pa se onda posle skupe svi zajedno pa ih rucno sortiraju uz kaficu..




Covjece, de ti to na pamet
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

perun85
Republika Srpska

Član broj: 185562
Poruke: 116
79.143.175.*



Profil

icon Re: ADO.NET i izdavanje racuna16.01.2009. u 14:46 - pre 185 meseci
Hvala pl4astik, problem sa resio tako sto sam dodao query u TableAdapter koji je vezan za SP na SQL Serveru.

Odlucio sam da se drzim podalje od generisanih metoda DataSet designera (jer kako vidim problem mi pravi mod u kome se metod izvrsava ExecuteNonQuery umesto ExecuteScalar). Kao bolje resenje mi se cini upotreba SP i TableAdapter queryja. -> nadam se da sam u pravu
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
93.86.5.*

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: ADO.NET i izdavanje racuna16.01.2009. u 15:23 - pre 185 meseci
Citat:
perun85: Odlucio sam da se drzim podalje od generisanih metoda DataSet designera (jer kako vidim problem mi pravi mod u kome se metod izvrsava ExecuteNonQuery umesto ExecuteScalar).


To je bilo pitanje

Citat:
perun85: Kao bolje resenje mi se cini upotreba SP i TableAdapter queryja. -> nadam se da sam u pravu


Pa, naravno, ko coek




To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
79.101.168.*



+987 Profil

icon Re: ADO.NET i izdavanje racuna16.01.2009. u 15:31 - pre 185 meseci
Napravio sam jedan mali programcic cisto da istestiram koliko cesto se javljaju duplikati za GUID redove:


Code:

            MySqlConnectionStringBuilder mcsb = new MySqlConnectionStringBuilder();
            mcsb.UserID = "root";
            mcsb.Password = "";
            mcsb.Server = "localhost";
            MySqlConnection conn = new MySqlConnection(mcsb.ToString());
            MySqlCommand cmd = new MySqlCommand("SELECT UUID();",conn);
            Dictionary<string, int> NizGUID = new Dictionary<string, int>();
            string guid;

            try
            {
                if (conn.State == ConnectionState.Closed) conn.Open();


                for (int i = 0; i < 1000 * 1000*10; i++)
                {
                    guid = (string)cmd.ExecuteScalar();

                    if (!NizGUID.ContainsKey(guid))
                        NizGUID.Add(guid, 1);
                    else NizGUID[guid]++;
                }

            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);

            }
            finally
            {
                if (conn.State != ConnectionState.Closed) conn.Close();
            }

            label2.Text = NizGUID.Values.Max().ToString() ; 


I na 10 miliona generisanih GUID-ova nije bilo ni jednog ponavljanja, tako da je mmix u pravu sto se tice frekvencije ponavljanja.

Koriscen Mysql Server 5.0, VS 2008, .NET 3.5.
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
77.222.25.*

Sajt: www.azalea-maritime.com


Profil

icon Re: ADO.NET i izdavanje racuna16.01.2009. u 18:34 - pre 185 meseci
Ne može se tako generisati duplikat GUID-a ni da je izvršena simulacija unosa 100 milijardi redova u tabelu. ;)

Problem sa dupliranjem GUID-a koji sam ranije naveo - dogodio se u sasvim drugačijim okolnostima i taj problem je, tokom godina, gotovo definitivno prevaziđen kao što pokazuju reference na Web-u. :)
 
Odgovor na temu

perun85
Republika Srpska

Član broj: 185562
Poruke: 116
79.143.175.*



Profil

icon Re: ADO.NET i izdavanje racuna16.01.2009. u 19:51 - pre 185 meseci
Pl4astik, hvala na podrsci .
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: ADO.NET i izdavanje racuna16.01.2009. u 20:14 - pre 185 meseci
Citat:
pl4stik: @perun85
Ako sam dobro skontao, pitanje je (izmedju ostalih ) kako da xsd vrati SCOPE_IDENTITY() proveri http://forums.asp.net/t/990365.aspx.
Happy coding
Citat:
perun85: Hvala pl4astik, problem sa resio tako sto sam dodao query u TableAdapter koji je vezan za SP na SQL Serveru.
Odlucio sam da se drzim podalje od generisanih metoda DataSet designera (jer kako vidim problem mi pravi mod u kome se metod izvrsava ExecuteNonQuery umesto ExecuteScalar). Kao bolje resenje mi se cini upotreba SP i TableAdapter queryja. -> nadam se da sam u pravu


Necu da zapocinjem raspravu oko SP vs. generated script, oba imaju pro i contra, ali je ona tema na asp.net forumu losa jer i generated skripte rade veoma dobro isti posao, a momci su se nalupali posteno pokusavajuci da rese problem koji ne postoji. Razlog iz kojeg u designer.cs vidis ExecuteNonQuery je zato sto ta Insert metoda nije predvidjena za operacije nad DataSet instancama, to je tzv. DirectDB metoda koja omogucava upisivanje reda u bazu zaobilazeci DataSet.

Ako koristis DataSet i za sinhronizaciju dataset-a sa tabelom u bazi koristis TableAdapter.Update() metod (kako bill gates zapoveda ) radice kako treba, tj npr SqlDataAdapter.Update ce za svaki poziv Insert komande koji vrati red zameniti red iz dataset-a pristiglim redom (i samim tim cete dobiti novi kljuc) i taj kod ni ne mozes da vidis u designer.cs fajlu jer tamo i nije. Kao primer attachovan je mini projekat u kojem je to realizovano u konzolnoj aplikaciji, doda se red, pozove se update adaptera i ispise se novopristigli ID koji je u bazi. Kaci se na lokalnu bazu (connection string je u app.config) i u bazi vam treba sledeca tabela:

Code:
CREATE TABLE [dbo].[MojaTabela](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Data1] [nchar](10) NULL,
 CONSTRAINT [PK_MojaTabela] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
))


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
Prikačeni fajlovi
 
Odgovor na temu

perun85
Republika Srpska

Član broj: 185562
Poruke: 116
79.143.175.*



Profil

icon Re: ADO.NET i izdavanje racuna17.01.2009. u 11:27 - pre 185 meseci
U tom slucaju samo sacuvamo indexe svih redova koje smo uneli u niz, kako bi naknadno mogli da pristupimo ID svojstvu svakog reda.
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
93.86.5.*

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: ADO.NET i izdavanje racuna17.01.2009. u 20:09 - pre 185 meseci
Ma oni ih vec imaju nego u tim njihovim arhitekturama pretaraga mnogo traje (valjda)...

@mmix

Nista od ovoga sto si napisao nisam znao i sad znam, a kod josh desifrujem Thanks man
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

[es] :: .NET :: ADO.NET i izdavanje racuna

Strane: 1 2 3

[ Pregleda: 8060 | Odgovora: 42 ] > FB > Twit

Postavi temu Odgovori

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