Názory ke článku Oracle C++ Call Interface – 4. Select a metadáta
Pro přístup ke sloupečkům se mi místo pozičních indexů osvědčilo využívat názvy sloupců (JDBC to umí, předpokládám že OCCI taky). Není to sice použitelné při dynamickém načítání z metadat, ale to v praxi zase tak často nevyužijete. Spíš se setkáte s tím, že se ještě upravuje datový model - přidáním/odebráním/výměnou sloupců a informace se k vám nedostane :-) pokud jsou postižené sloupce stejného datového typu, můžete chybu odhalit až v testech (v lepším případě). Proto si myslím, že je tento postup bezpečnější.
Pokud zjišťujeme metadata objektů, není to nic jiného než další dotaz do databáze - od kterého však díky driveru (JDBC/OCCI) zůstaneme odstíněni. Ten za nás zajistí načtení dat z datového slovníku. Zajímá-li nás seznam sloupců a jejich typů, driver za nás vykoná nějaký takovýto dotaz:
SELECT column_id, column_name, data_type FROM all_tab_columns
WHERE table_name = 'OSOBY' ORDER BY column_id
* apostrofy jsou bez escape sekvence, tj. 'OSOBY'To stepan: Mate prakticky uplnu pravdu. Za pozicne indexy by ma nakopal do riti nie jeden clovek, co je pravda.. Pri OCCI by som sa tak musel este zaoberat konverziou std::string na nieco comu rozumie oracle atd atd.. Cele som sa to snazil nejak zjednodusit asi aj z vlastnej lenivosti :). Az po vasom prispevku mi doslo ze to bola riadna blbost :)
Co sa tyka druheho bodu.. tiez pravda :) prakticky vsetko sa to da poriesit tymto sposobom. Mne skor islo ukazat ze nejake metadata su a ako sa pouzivaju.
17. 12. 2007
To stepan: Neviem ci nemyslite nieco ine ale pouzitie pozicnych indexov (napr. rs->getString(2)
) je uplne v poriadku, vzhladom k tomu ze v dotaze su jednotlive stlpce vymenovane (SELECT MENO, PRIEZVISKO, VEK FROM OSOBY) problem nenastane v ziadnej z popisovanych situacii.
To Tral: Myslel jsem změny, které se do kódu projeví v průběhu vývoje. Máš pravdu, tento příklad je natolik jednoduchý, že chybu neuděláš. Pokud však z databáze budeš načítat sloupečků několik desítek (ano, i takové datové modely existují), pak orientace při každé změně (přidání/odebrání/přejmenování) je čím dál tím složitější. Domnívám se, že použití pozičních indexů také není při větším počtu příliš přehledné :-) ale je to věc názoru.