Во-первых, я новичок в C ++;сейчас я пытаюсь написать проект, чтобы прослушать любое изменение базы данных с MySQL binlog
и что-то сделать.Я выбрал библиотеку с именем mysql-binlog-repliation , следуя ее кодам примеров, и теперь я могу отслеживать события в MySQL binlog
, получать старые и новые значения.Тем не менее, я не могу получить столбцы, я хочу знать, как получить столбцы вместе со значениями, спасибо за любые полезные ответы!
Ниже приведена часть моих кодов:
while (true) {
int result = binlog.wait_for_next_event(&event);
if (result == ERR_EOF)
break;
std::cout << "Found event of type " << event->get_event_type();
int event_type = event->get_event_type();
if (event_type == mysql::TABLE_MAP_EVENT) {
tmev = (mysql::Table_map_event *)event;
std::string tablename=tmev->table_name;
}
if (event_type == mysql::WRITE_ROWS_EVENT || event_type==mysql::UPDATE_ROWS_EVENT || event_type==mysql::DELETE_ROWS_EVENT) {
mysql::Row_event *row_event = (mysql::Row_event *)event;
mysql::Row_event_set rows(row_event, tmev);
mysql::Row_event_set::iterator itor = rows.begin();
do {
mysql::Row_of_fields fields = *itor;
mysql::Row_of_fields::iterator it = fields.begin();
// Here,fields represent values,I have no way to get columns
do {
std::string out;
converter.to(out, *it);
std::cout << "\t" << out;
} while (++it != fields.end());
} while (++itor != rows.end());
}
std::cout << std::endl;