获取具有字段名称的 SELECT 字段类型,并带有 MariaDB C++连接器
Get SELECT field type having the field name with MariaDB C++ connector
我有一个MariaDB选择,它在通用C++类中处理。 我需要让选择字段类型在 FLOAT 或 DOUBLE 的情况下进行处理,但所有字段都由同一个函数处理。 举个例子:
std::string sqlwrap::operator [] (std::string field_name)
{
nflog ();
if (!_res || _type == sql_void || _type == sql_invalid)
return "";
std::string res;
try {
res = _store->getString(field_name);
} catch (sql::SQLException & e) {
logp (sys::e_debug, "SQL exception: "
<< e.what());
}
return res;
}
在这个函数中,我必须检查它是否是一个 FLOAT,然后更改"."(小数位(由","(某些欧洲国家的小数位(组成。
这可能是线路中的东西...
std::string sqlwrap::operator [] (std::string field_name)
{
nflog ();
if (!_res || _type == sql_void || _type == sql_invalid)
return "";
std::string res;
try {
res = _store->getString(field_name);
switch (_store->getFieldType(field_name)) {
case DOUBLE:
res = change_dots_by_comma(res);
break;
default:
}
} catch (sql::SQLException & e) {
logp (sys::e_debug, "SQL exception: "
<< e.what());
}
return res;
}
我知道有 FORMAT 函数,但我想知道我是否可以使用 MariaDB C++ 连接器获取带有字段名称的字段类型。 我不想在选择中使用格式。
使用适当的"区域设置"来获取"小数点"、"千位分隔符"等。 另请注意,MariaDB 的FORMAT()
中有一个可选的语言环境参数。
有关列的架构信息:
SELECT * FROM information_schema.COLUMNS
WHERE table_schema = "database_name"
AND table_name = "table_name"
AND column_name = "column_name"
浮点数和十进制的示例:
CREATE TABLE `dec184` (
`d` decimal(18,4) DEFAULT NULL,
`d2` decimal(18,4) NOT NULL,
`dx` float DEFAULT NULL,
`dv` float DEFAULT NULL
)
从查询:
*************************** 2. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: try
TABLE_NAME: dec184
COLUMN_NAME: d2
ORDINAL_POSITION: 2
COLUMN_DEFAULT: NULL
IS_NULLABLE: NO
DATA_TYPE: decimal
CHARACTER_MAXIMUM_LENGTH: NULL
CHARACTER_OCTET_LENGTH: NULL
NUMERIC_PRECISION: 18
NUMERIC_SCALE: 4
DATETIME_PRECISION: NULL
CHARACTER_SET_NAME: NULL
COLLATION_NAME: NULL
COLUMN_TYPE: decimal(18,4)
COLUMN_KEY:
EXTRA:
PRIVILEGES: select,insert,update,references
COLUMN_COMMENT:
*************************** 3. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: try
TABLE_NAME: dec184
COLUMN_NAME: dx
ORDINAL_POSITION: 3
COLUMN_DEFAULT: NULL
IS_NULLABLE: YES
DATA_TYPE: float
CHARACTER_MAXIMUM_LENGTH: NULL
CHARACTER_OCTET_LENGTH: NULL
NUMERIC_PRECISION: 12
NUMERIC_SCALE: NULL
DATETIME_PRECISION: NULL
CHARACTER_SET_NAME: NULL
COLLATION_NAME: NULL
COLUMN_TYPE: float
COLUMN_KEY:
EXTRA:
PRIVILEGES: select,insert,update,references
COLUMN_COMMENT:
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 仅匹配集合中的某些字段
- 结构字段名称与 GDB 中的 STL 数组冲突
- 如何使用位字段将数据从二进制文件复制到结构中?
- 结构体和类的不同大小(),彼此具有相同的字段类型
- 如何避免在数据结构中包含存储为字段的类?
- 聚合初始化和删除的复制构造函数,也称为不可复制的 obejcts 作为字段
- 获取具有字段名称的 SELECT 字段类型,并带有 MariaDB C++连接器