Share via


SQLDescribeCol 和 SQLColAttribute

SQLDescribeColSQLColAttribute 是用於擷取結果集的中繼資料。 這兩個函式之間的差異,在於 SQLDescribeCol 總是會傳回相同的五段資訊 (資料行的名稱、資料類型、精確度、小數位數和可 NULL 性),而 SQLColAttribute 會傳回應用程式所要求的單一資訊。 不過,SQLColAttribute 可以傳回更多種類的中繼資料,包括資料行的區分大小寫、顯示大小、可更新性和可搜尋性。

許多應用程式,尤其是只顯示資料的應用程式,只需要 SQLDescribeCol 所傳回的中繼資料。 對於這些應用程式來說,使用 SQLDescribeCol 會比 SQLColAttribute 更快,因為資訊會在一次呼叫內傳回。 其他應用程式,尤其是更新資料的應用程式,需要 SQLColAttribute 所傳回的其他中繼資料,因此這兩個函式都會使用。 此外,SQLColAttribute 也支援驅動程式特定的中繼資料;如需詳細資訊,請參閱驅動程式特定的資料類型、描述項類型、資訊類型、診斷類型及屬性

在陳述式備妥或執行之後和結果集資料指標之前關閉,應用程式可以隨時擷取結果集的中繼資料。 在陳述式備妥後和執行之前,很少應用程式會需要結果集的中繼資料。 可能的話,應用程式應該等到陳述式執行後再擷取中繼資料,因為某些資料來源無法傳回備妥之陳述式的中繼資料,而且在驅動程式中模擬這項功能通常是個緩慢的流程。 舉例來說,驅動程式可能會把 SELECT 陳述式的 WHERE 子句取代為 WHERE 1 = 2 子句,並執行其產生的陳述式,產生零資料列的結果集。

從資料來源擷取中繼資料通常成本很高。 因此,驅動程式應該快取其從伺服器擷取的任何中繼資料,並在結果集上的資料指標開啟期間持續保留該中繼資料。 此外,應用程式應該僅要求其必要的中繼資料。