准备语句中 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_INT
和 MYSQL_TYPE_STRING
在 23.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
绑定类型。
可以创建具有 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_INT
和 MYSQL_TYPE_STRING
在 23.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
绑定类型。