2010-06-02 76 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