c++,从数据库结果创建结构体
c++, create structs from a database result
我试图从数据库结果创建结构。有什么简单的方法可以做到这一点?我想得到这样的东西:(这是一个不工作的小例子。我放这个是为了让一切都清楚)
struct ROWSTRUCTURE
{
int ID;
std::string test;
};
enum ROWSTRUCTURE_FIELD_ENUM_end
{
ROWSTRUCTURE_FIELD_ENUM_ID,
ROWSTRUCTURE_FIELD_ENUM_test,
ROWSTRUCTURE_FIELD_ENUM_end
};
list<ROWSTRUCTURE> getData()
{
MYSQL_ROW row;
MYSQL_RES *res_set;
mysql_query(connect,"SELECT * FROM `example`;");
res_set = mysql_store_result(connect);
while ((row = mysql_fetch_row(res_set)) != NULL)
{
ROWSTRUCTURE StructToAdd;
for( int i = 0; i < ROWSTRUCTURE_FIELD_ENUM_end; i++)
StructToAdd[i] = row[i]; //ERROR
}
delete res_set;
}
我怎样才能用正确的方法做这件事?
您正在寻找的是所谓的"反射",其中变量,成员字段等名称可用于引用实际的变量/字段或任何东西。c++不支持这个。你需要用其他方法来解决这个问题。一个合理的解决方案是:
StructToAdd.ID = strtol(row[ROWSTRUCTURE_FIELD_ENUM_ID]);
StructToAdd.test = row[ROWSTRUCTURE_FIELD_ENUM_test];
或者,如注释所示:
struct ROWSTRUCTURE
{
int ID;
std::string test;
ROWSTRUCTURE operator=(const MYSQL_ROW &row)
{
ID = strtol(row[ROWSTRUCTURE_FIELD_ENUM_ID]);
test = row[ROWSTRUCTURE_FIELD_ENUM_test];
return *this;
}
};
,然后在"main"函数中:
StructToAdd = row;
相关文章:
- 创建结构的数组时遇到分段错误
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 创建结构体向量,表达式:向量下标超出范围
- 如何创建一个结构体数组
- 如何在c++中创建不可变结构体
- 如何创建一个公共python函数,它可以接收c++结构体/实例或python对象作为参数
- 在结构体中创建一个特定结构体的数组
- 在定义充满成员的结构体时,是否为该结构体类型的每个变量创建这些成员?
- 如何使用结构体创建链表
- c++,从数据库结果创建结构体
- 创建带有boost图的结构体
- 在c++中创建字符串的枚举/结构体
- 如何在创建新结构体时给成员指针赋NULL值
- 在c++中创建结构体数组
- 尝试创建一个函数,将数据从文件读取到结构体数组中
- 在c++中创建结构体数组
- 从相同的结构体以相反的顺序创建两个优先级队列
- 试图创建一个包含预定义结构体数组的类
- 使用命令行参数创建结构体向量
- 创建一个结构体数组,但稍后定义其大小