Ha már egyszer minden adatbázisműveletet a SharpInvoice.MySQL osztály függvényei végeznek, akkor bármilyen adatbáziskezelő lehetne a háttérben...
Most engem is elfogott a kivancsisag, es belelestem a kodba;)
(tiszta java-feeling btw)
Pl. az src/ContainerDialog.cs fajlban osszesen negy helyen hiv meg tarolt eljarast (stored procedure):
CALL sp_showpartners('nev')
CALL sp_showproducts('Megnevezes')
CALL sp_deletepartner(" + partnerTV.partnerItem.PartnerID + ")
CALL sp_deleteproduct(" + productTV.productItem.ProductID + ")
Ezen kivul a kovetkezo fajlokban van meg direkt SQL hivas (mind stored procedures):
PreferencesDialog.cs 27,56,40,62,80,139,149
InvoiceDialog.cs 97,150,199,231,315,336,368,424
PartnerDialog.cs 85,98
PrintInvoice.cs 93,115,149,167,419,434
ContainerDialog.cs 95,116,188,191
Main.cs 125,171,224
InvoiceItemDialog.cs 161
Misc.cs 199,215,231,276,290
Szoval mysql hivasok szet vannak szorva a kodban rendesen.
vbali: jobb lenne egy osztalybol hivogatni a MySQL-t szerintem.
A tarolt eljarasokra visszaterve:
Van jopar olyan tavoli eljaras, ami szerintem teljes mertekben felesleges. Peldaul:
CREATE PROCEDURE `sp_getuniquedesc`()
BEGIN
SELECT * FROM UNIQUEDESC;
END $$
Erre az egyszeru SELECT utasitasra minek egy egesz fuggvenyt hivni?
Amennyire en megertettem a mySQL doksijabol, ennek a tarolt eljarasnak akkor van ertelme, hogyha trigger esemenykent fogjuk fel. Tehat ha az egyik tabla valamelyik soran modositasz es ez kihatassal van a masik tabla valamelyik mezojere, akkor ezt egyszerre kell megcsinalni (eddig lockolassal csinaltuk. mondjuk lockolni mintha most is kene ettol(ket konkurrens procedure szerintem okozhat meglepetest, bar mysql imho kioptimakolja, es nem jon elo. De azert en csak lockolgatnek).)
Szoval tobb tablan vegzett muveleteket erdemes osszefogni egy fuggvenybe. Ez kenyelmi es teljesitmenybeli szempont.
Itt nem lenyeg a teljesitmeny.
Vegigneztem a procedure-jeidet, a sp_updateisstorno kivetelevel az osszes folosleges. (egyetlen parancsot hajtasz vegre mindenhol).
Teny, hogy atlathatobb, de sztem atestel a lo tuloldalara.
Tenyleg nem akarok okoskodni (meg kivulrol ez abszolut nem latszik), de szerintem igy kellene megcsinalni:
Minden mySQL parancsot egy osztalybol hivni. Minden SQL-es stored procedure-nak csinalni az osztalyban egy ugyanolyan nevu metodust, es azt kellene meghivni (es a metodus hivna meg a MySQL-ben levo stored procedure-t).
Igy tok egyszeru lenne kicserelni a MySQL-t mogotte, mivel csak az SQL-ben levo stored procedure logikajat kell a metodusban megvalositani (kulonallo parancsok szerint).
Es a mostani stored procedure-ok szamat 1-re lehetne csokkenteni (a mostani 32-rol).(a tobbi 31 teljesen felesleges sztem).
A stored procedure szerintem nem oldja meg a tranzakciokezelest btw.
(jo lenne ennek az ellenkezojerol doksit talalni).
...mert ott van a Mono GAC-ban,
Errol tudnal egy linket adni, hogy mi fan terem? Hogy mi (en) foldi halandok is ertsuk;)
Khiraly
---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....