Legutóbbi bejegyzésemben földig leoltottam kb a zsírparaszt visual studiot és az sql ce-t.
Azóta sikerült lehetőleg még jobban elmélyednem a témában, és bár van benne egy-két nagyon hiányzó és fájó pont, azért bizonyos dolgokban végül egész pofás kis megoldásokkal elő lehet állni, csak tudni kell hogy.
Ennek illusztrálására most álljon itt két kis kódrészlet:
public static DataTable KeresCikket(string parameter)
{
CikkTableAdapter cta = new CikkTableAdapter();
DSCikk.CikkDataTable cdt = cta.GetData();
DataRow[] cikkrows = cdt.Select("Ean like '%" + parameter + "%' OR Ean like '%" + parameter + "%' OR Megnev like '%" + parameter + "%'");
DataTable result = new DataTable();
result = cdt.Clone();
foreach (DataRow cikkrow in cikkrows)
{
result.ImportRow(cikkrow);
}
return result;
}
ÉS!:
public static DataTable KeresCikket(string parameter)
{
DSCikk.CikkDataTable cdt = DataAdapters.cta.GetDataByLikeParam(parameter);
return cdt;
}
Na kitaláljátok-e... igen. ez a kettő bizony kőugyanazt csinálja. Utóbbi megoldásban egyedül egy amúgy szépen kattintgatással is összerakható SQL query fut... Jó dolog így végignézni, hogy mit disznólkodtam én régebben a projektekben, nagyon sokat lehet szépíteni a kódon. Viszont joggal tehetjük fel a kérdést, hogy teljesítményben ez hogyan jelenik meg. Ezen a ponton lepődtem én meg: az utóbbi metódus kb 3szor gyorsabban le is fut azonos eredményt hozva... most keresem, hol malackodtam még... NEMFÉLREÉRT!
...
Na mondjuk az igaz, hogy vicces megoldást találtam a bluetoothon keresztüli fájlok küldésére (szekvenciálisan). Van egy nagyon jópofa kis keretrendszer az ilyen dolgok hegesztésére: http://32feet.net/ oldalon találhattok hozzá egy egész aktív fórumot, meg sok segítséget. Ráadásul ingyenes.
Igaz, néha kicsit szenvedni kell, mert az oké, hogy addig nem lehet a következő file-t elküldeni, amíg az előző át nem ért, mert a kapcsolaton addig csak egy "BadRequest" üzenet jön vissza, de valamiért nálam ez itt be is ragadt szépen rendesen. Visszafejtettem: a program bár a kapcsolatot lezárta, de a socketet nem szabadította fel, így az beragadt, és az első file leküldése után csak bambult mint GDF-es villanymérnök az oszcilloszkópra. Az, hogy implicit várakozást adunk meg, nem jó megoldás, mert nem tudjuk mikor ér át a file. Az meg milyen paraszt már, ha érted beadod neki hogy várjá fél órát azt addig biztos átmegy, utána mehet a többi. A socketet felszabadítani nem tudtam sajnos, mert mindenhol valami nagy piros pöttyös exceptiont dob a kis gané. Megoldás?
...
...
elment rá két napom, de megmutatom okulásul...:
file küldése után [repeat until nem sikerül a következő file küldése]:
AppSettings.BTRadio.Mode = InTheHand.Net.Bluetooth.RadioMode.PowerOff;
Thread.Sleep(5000);
AppSettings.BTRadio.Mode = InTheHand.Net.Bluetooth.RadioMode.Discoverable;
Igen. Jól látod. Kikapcsolom a kicseszett kékfogat az egész telefonon, várok 5 mp-t és visszakapcsolom.... :D Na így próbálja meg foglaltba tartani a socketet, hogy "driverből" kilövöm alóla az egészet...
~~~
2011/06/01
2011/04/01
SQL CE én így szeretlek...
Ez zseniális... (egyben tutorial / mesemesemeskete azoknak, akiknek valaha szükségük lesz táblaátnevezésre SQL CE-ben VS2008 alattt...)
Visual Studio 2008-ban, SQL CE-t konfigolva döbbenhetünk rá arra a csodálatos tényre, hogy oly bonyolult műveletek végrehajtására, mint pl... egy tábla ÁTNEVEZÉSE nincs alapból mód. Ugyanis a tábla tulajdonságainál a Name mező ki van szürkítve, csak olvasható, tehát nem tudod átírni, bármennyire is próbálkozol, és még csak elrejtve sincsen a környezetben ilyen funkció. Magyarán mintha a VS2008 nem ismerné az ALTER TABLE NAME c. részt... vagyis inkább az SQL CE nem ismeri ezt.
Mit is tegyél, márpediglen, ha mégis át kell nevezni egy táblát? Ilyenkor jön jól egy kis T-SQL. Na meg egy kis röhögés...
Futtassunk csak egy query-t, névszerint egy sp_rename-t.
Majd futtatás után rökönyödjünk meg, csalódjunk, essünk pofára, amiért ilyet kapunk:
Igen, jól látod, hibaüzi, hogy Unable to parse query text. Azaz, hogy képtelen értelmezni/lefordítani azt a szájbatekert queryt, tehát nem tudja, mi az az sp_rename... gondolnád te. Viszont ott egy continue gomb...
... ezt kapod, ha rákattintasz. WTF?!!!!! Nyomjunk egy refresht a táblákra...
... na erre varjál gombot. Visual studio 2008, SQL Compact Edition, Micro$oft. Én így szeretlek.
btw, szerinted az normális, hogy egy ilyen "bonyolult" művelethez T-SQL-t kell tudni? ... hány "programozó" cseszett el vajon órákat, hogy mezőnként átmásolt táblákat egy új táblába.... nocomment.
~~~
Visual Studio 2008-ban, SQL CE-t konfigolva döbbenhetünk rá arra a csodálatos tényre, hogy oly bonyolult műveletek végrehajtására, mint pl... egy tábla ÁTNEVEZÉSE nincs alapból mód. Ugyanis a tábla tulajdonságainál a Name mező ki van szürkítve, csak olvasható, tehát nem tudod átírni, bármennyire is próbálkozol, és még csak elrejtve sincsen a környezetben ilyen funkció. Magyarán mintha a VS2008 nem ismerné az ALTER TABLE NAME c. részt... vagyis inkább az SQL CE nem ismeri ezt.
Mit is tegyél, márpediglen, ha mégis át kell nevezni egy táblát? Ilyenkor jön jól egy kis T-SQL. Na meg egy kis röhögés...
Futtassunk csak egy query-t, névszerint egy sp_rename-t.
sp_rename [réginév], [újnév]
Pl. ígyMajd futtatás után rökönyödjünk meg, csalódjunk, essünk pofára, amiért ilyet kapunk:
Igen, jól látod, hibaüzi, hogy Unable to parse query text. Azaz, hogy képtelen értelmezni/lefordítani azt a szájbatekert queryt, tehát nem tudja, mi az az sp_rename... gondolnád te. Viszont ott egy continue gomb...
... ezt kapod, ha rákattintasz. WTF?!!!!! Nyomjunk egy refresht a táblákra...
... na erre varjál gombot. Visual studio 2008, SQL Compact Edition, Micro$oft. Én így szeretlek.
btw, szerinted az normális, hogy egy ilyen "bonyolult" művelethez T-SQL-t kell tudni? ... hány "programozó" cseszett el vajon órákat, hogy mezőnként átmásolt táblákat egy új táblába.... nocomment.
~~~
Feliratkozás:
Bejegyzések (Atom)