C++: MySQL xdevapi аварийно завершает работу при вставке данных (выдает ошибку «метаданные не найдены»)C++

Программы на C++. Форум разработчиков
Anonymous
C++: MySQL xdevapi аварийно завершает работу при вставке данных (выдает ошибку «метаданные не найдены»)

Сообщение Anonymous »

Я пытаюсь вставить некоторые данные в таблицу MySQL с помощью C++ Xdevapi. Следующий код для вставки чего-либо в таблицу, что неудивительно, работает:

Код: Выделить всё

t.insert().values(0, "cng", "CNG").execute();            // Works as expected
t.insert("code", "name").values("cng", "CNG").execute(); // Also works
Однако я не могу использовать эту опцию, поскольку не знаю количества столбцов и полей во время компиляции. Поскольку документации Xdevapi, мягко говоря, не хватает, мне пришлось прибегнуть к множеству экспериментов. Наиболее логичной попыткой, которую я попробовал, был следующий код, в котором вместо этого используется строка:

Код: Выделить всё

mysqlx::abi2::Row row1;

row1.set(1, 0);
row1.set(2, "cng");
row1.set(3, "CNG");

// t.insert().values(row1).execute(); // terminate called after throwing an instance of 'std::out_of_range'
//   what():  no meta-data found

// t.insert().rows(row1).execute();   // terminate called after throwing an instance of 'std::out_of_range'
//   what():  no meta-data found
Но этот код завершается сбоем из-за исключения «метаданные не найдены».
Для справки: следующий код (который противоречит цели из-за необходимости указывать имена столбцов, которые я не знаю во время компиляции) также терпит неудачу с тем же исключением:

Код: Выделить всё

mysqlx::abi2::Row row2;

row2.set(1, "cng");
row2.set(2, "CNG");

// t.insert("code", "name").values(row2).execute(); // terminate called after throwing an instance of 'std::out_of_range'
//   what():  no meta-data found

// t.insert("code", "name").rows(row2).execute();   // terminate called after throwing an instance of 'std::out_of_range'
//   what():  no meta-data found
Я знаю, что могу решить эту проблему, написав собственные SQL-запросы с помощью Session.sql(), но наверняка должно быть лучшее решение? Есть ли способ указать метаданные, которые он не находит?


Подробнее здесь: https://stackoverflow.com/questions/787 ... ound-error

Вернуться в «C++»