2010-06-02 77 views
1

聲明:我是n00b。ODBC:如何處理布爾值?

好像ODBC不支持BOOLEAN類型?這是真的?

如果是這樣,什麼是標準kludgearound?


編輯:我在Windows上使用ADO與Delphi編寫數據,但PHP 5將其讀回。

回答

1

SQL本身傳統上不支持布爾類型,所以ODBC只是反映了這一點。由於ODBC旨在提供跨數據庫的可移植性,通常最好在數據庫中實現布爾值作爲標準類型之一,例如包含'Y'或'N'的CHAR(1),而不是使用特定於供應商的特定類型。

+0

謝謝Neil,這似乎是合理的(並且在某種程度上比使用0或1更好)。 – Mawg 2010-06-02 11:18:40

+1

我不同意。 ODBC是一個C API,所以使用0和1更容易(雖然不是必需的)。 – 2010-06-02 11:24:29

+0

@Mthethew在技術上並不容易,Y和N(對於英語用戶)自我記錄,並且整數佔用更多空間數據庫。 – 2010-06-02 11:40:05

1

還有SQL_C_BIT,但您需要查找給定驅動程序對每種SQL類型使用的內容。例如,用於bool的MySQL uses SQL_C_CHAR。

+0

+1我在Windows上使用Delphi的ADO編寫數據,但PHP 5將其讀回。 – Mawg 2010-06-02 11:01:23

+0

但是是什麼驅動程序?例如,MySQL的是MySQL Connector/ODBC。 – 2010-06-02 11:03:50

1

我相信這取決於實際的SQL服務器實現。您可以檢查ODBC驅動程序/數據源設置,如果您是在Windows下進行的 - 可能會有諸如Bool As Char等選項。

+0

+1但是,「我相信這取決於實際的SQL服務器實現」 - 當然,這就是ODBC從我身上隱藏的東西?馬修在說到司機時可能會更接近標準(?) – Mawg 2010-06-02 11:00:39