我使用的是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::错误:CDK错误:插入的行中字段数错误的未捕获异常
你能帮我吗?
这里有两个问题。
首先,您调用values
两次而不是一次,而且两次都使用了错误的[数量]参数。您应该为每行提供一次values()
,每次为该行(ref(中的每个字段提供一个值。
其次,std::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();