提问人:sorosh_sabz 提问时间:5/10/2019 最后编辑:Peter Mortensensorosh_sabz 更新时间:10/16/2021 访问量:470
如何使用复合键在 SQLite ORM 中插入条目
How to insert an entry in SQLite ORM with a composite key
问:
我使用SQLite ORM库在我的程序中使用SQLite,我有如下表:
auto storage = make_storage("test_remove.sqlite",
make_table("objects",
make_column("key_part_1",
&Object::key_part_1),
make_column("key_part_2",
&Object::key_part_2),
make_column("name",
&Object::name),
primary_key(&Object::key_part_1, &Object::key_part_2)));
正如你所看到的,这个表有一个复合键(和)。当我从下面创建一个实例时,key_part_1
key_part_2
Object
Object object{0, 0, "dummy"};
并尝试插入表格
auto id1 = storage.insert(object);
我得到一个例外。
如何将对象插入到此表中?
答:
1赞
sorosh_sabz
6/6/2019
#1
正如您在 GitHub for SQLite ORM 中的一个问题中看到的那样,具有复合键的项目将方法命名为方法,要插入具有复合键的对象,您必须使用该函数而不是如下所示的函数。replace
insert
假设您有一个如下所示的实体:
struct Object
{
int key_part_1;
int key_part_2;
std::string name;
};
并创建一个如下所示的架构:
auto storage = make_storage("test_remove.sqlite",
make_table("objects",
make_column("key_part_1",
&Object::key_part_1),
make_column("key_part_2",
&Object::key_part_2),
make_column("name",
&Object::name),
primary_key(&Object::key_part_1, &Object::key_part_2)));
因此,您可以插入此实体的一个实例,如下所示:
Object object{0, 0, "Skillet"};
storage.replace(object);
评论
0赞
Ram
9/29/2023
我在创建者函数的主体中创建了存储。这已不在当前范围内。如何访问包装相关功能的类中的存储?
评论