Megosztás:


SQLDescribeCol és SQLColAttribute

Az SQLDescribeCol és az SQLColAttribute az eredményhalmaz metaadatainak lekérésére szolgál. A két függvény közötti különbség az, hogy az SQLDescribeCol mindig ugyanazt az öt információt adja vissza (egy oszlop neve, adattípusa, pontossága, méretezhetősége és nullabilitása), míg az SQLColAttribute egyetlen, az alkalmazás által kért információt ad vissza. Az SQLColAttribute azonban sokkal gazdagabb metaadatokat adhat vissza, beleértve az oszlop kis- és nagybetűk érzékenységét, a megjelenítés méretét, az frissíthetőséget és a kereshetőséget.

Számos alkalmazásnak, különösen azoknak, amelyek csak adatokat jelenítenek meg, csak az SQLDescribeCol által visszaadott metaadatokat kell használnia. Ezekben az alkalmazásokban gyorsabb az SQLDescribeCol használata, mint az SQLColAttribute , mivel az információk egyetlen hívásban lesznek visszaadva. Más alkalmazásoknak, különösen az adatokat frissítő alkalmazásoknak az SQLColAttribute által visszaadott további metaadatokra van szükségük, ezért mindkét függvényt használják. Emellett az SQLColAttribute támogatja az illesztőprogram-specifikus metaadatokat; További információ: Driver-Specific adattípusok, leírótípusok, információtípusok, diagnosztikai típusok és attribútumok.

Az alkalmazás bármikor lekérheti az eredményhalmaz metaadatait egy utasítás előkészítése vagy végrehajtása után, valamint az eredményhalmaz fölötti kurzor bezárása előtt. Nagyon kevés alkalmazás igényel eredményhalmaz-metaadatokat az utasítás előkészítése és végrehajtása után. Ha lehetséges, az alkalmazásoknak várniuk kell a metaadatok lekérésére az utasítás végrehajtása után, mivel egyes adatforrások nem tudják visszaadni az előkészített utasítások metaadatait, és a képességnek az illesztőprogramban való emulálása gyakran lassú folyamat. Előfordulhat például, hogy az illesztő nullasoros eredményt hoz létre úgy, hogy lecseréli a SELECT utasítás WHERE záradékát a WHERE 1 = 2 záradékra, és végrehajtja az eredményként kapott utasítást.

A metaadatok gyakran költségesek az adatforrásból való lekéréshez. Emiatt az illesztőprogramoknak gyorsítótárazniuk kell a kiszolgálóról lekért metaadatokat, és mindaddig tárolniuk kell őket, amíg a kurzor az eredményhalmaz felett meg van nyitva. Emellett az alkalmazásoknak csak azokat a metaadatokat kell igényelniük, amelyekre feltétlenül szükségük van.