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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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