准备语句中 BOOLEAN 列的 C 数据类型是什么?

What is the C datatype for BOOLEAN column in a Prepared Statement?

可以创建具有 BOOLEAN 数据类型的列,详见 Create boolean column in MySQL with false as default value。例如:

CREATE TABLE Persons (
  ID int NOT NULL,
  LastName varchar(255),
  FirstName varchar(255),
  Married boolean DEFAULT false
);

MySQL 数据类型如 MYSQL_TYPE_INTMYSQL_TYPE_STRING23.8.9.1 C API Prepared Statement Type Codes 的手册中有详细说明。但是,该手册没有讨论 BOOLEAN 数据类型或如何在准备好的语句中使用它。例如:

#include <stdbool.h>
#include <mysql/mysql.h>

MYSQL_BIND bind[1];
...

bool val = false;
unsigned long len;
len = sizeof(???);

bind[0].buffer_type= MYSQL_TYPE_<???>;
bind[0].buffer= (char*)&val;
bind[0].buffer_length = len;
bind[0].is_null= 0;
bind[0].length= &len;

我们为 BOOLEAN 类型使用什么数据类型,我们如何计算 MYSQL_BIND.buffer_length

在MySQL,BOOLEAN is a synonym for TINYINT(1).

因此,您将使用 MYSQL_TYPE_TINY 绑定类型。