Если в вашей структуре нет указателей, вы можете сохранить ее как большой двоичный объект, например:
void insertBlob(MYSQL *conn, MyStruct *myData)
{
char myDataEscaped[2 * sizeof(MyStruct) + 1];
char query[100 + 2 * sizeof(MyStruct) + 1];
int queryLen;
mysql_real_escape_string(conn, myDataEscaped, myData, sizeof(MyStruct));
queryLen = snprintf(query, sizeof(query),
"INSERT INTO my_table (id, blobdata) VALUES (NULL, '%s')",
myDataEscaped);
mysql_real_query(conn, query, queryLen);
}
Если в вашей структуре есть указатели (на другие структуры или на строки), тогдавам придется извлекать каждое поле отдельно и сериализовать его или создавать новую структуру без указателей для хранения данных (только не храните сами значения указателей, поскольку они будут бессмысленными при десериализации данных).Здесь упоминаются некоторые библиотеки , которые могут помочь.