1

我正在使用 Xcode、MySQL 和 XDevAPI。

我在数据库上有下表

create table TABLE(ID INT, VALUE_01 INT, VALUE_02 INT, VALUE_03 INT);

我在代码上具有以下值:

Table table(session, "TABLE");
int id;
set<int> numbers;

id = 2395;
numbers.insert(1);
numbers.insert(2);
numbers.insert(3);

所以我想尝试:

table.insert("ID", "VALUE_01", "VALUE_02", "VALUE_03")
  .values(id)
  .values(numbers)
  .execute();

但是,我收到运行时错误消息:

libc++abi.dylib:以 mysqlx::abi2::r0::Error 类型的未捕获异常终止:CDK 错误:插入的行中的字段数错误

你能帮我吗?

4

1 回答 1

0

你这里有两个问题。

首先,您调用values了两次而不是一次,而且两次都使用了错误的 [number of] 参数。您应该values() 每行提供一次,每次为该行中的每个字段提供一个值ref

其次, astd::set<int>有序的,这意味着对于 1、2 和 3 以外的不同输入,您的值可能会以与您想要的不同的顺序存储。

我建议std::vector<int>改为。

Table table(session, "TABLE");
int id;
vector<int> numbers;

id = 2395;
numbers.push_back(1);
numbers.push_back(2);
numbers.push_back(3);

table.insert("ID", "VALUE_01", "VALUE_02", "VALUE_03")
  .values(id, numbers[0], numbers[1], numbers[2])
  .execute();
于 2020-12-12T23:43:41.553 回答