gpt4 book ai didi

iphone - 外键约束不能通过程序工作,但可以与终端一起工作

转载 作者:行者123 更新时间:2023-12-03 20:42:56 25 4
gpt4 key购买 nike

我的表中有外键约束,但是当我使用终端插入数据时,它工作正常,但是当我在 xcode 项目中执行它时,它不起作用可能是什么问题。我如何通过程序启用 pragmaforeign_keys = ON。我正在使用下面的代码进行插入,但我认为外键未启用。只是告诉我如何通过程序启用外键。

+(BOOL)insertEmployee:(int)din :(NSString*)name{

NSArray *arrDocPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *strDestPath = [NSString stringWithFormat:@"%@/samplepillbox1.sqlite",[arrDocPath objectAtIndex:0]];

sqlite3 *dbEmployee;
if(sqlite3_open([strDestPath UTF8String], &dbEmployee)==SQLITE_OK)
{

//NSString *insertQuery = [NSString stringWithFormat:@"insert into maintable_master(din,brand_name) values(%d,'%@')",din,name];
//NSString *insertQuery = [NSString stringWithFormat:@"insert into doctor_master(din,firstname) values(%d,'%@')",din,name];
NSString *insertQuery = [NSString stringWithFormat:@"insert into schedule_master(din,start_date) values(%d,'%@')",din,name];
void *v;
char *errmsg;
if(sqlite3_exec(dbEmployee, [insertQuery UTF8String], 0, v, &errmsg)==SQLITE_OK)
{
NSLog(@"inserted successfully");
return YES;
}
}
return NO;}

最佳答案

您应该能够像运行更标准的 SQL 语句一样设置编译指示。通常,您在打开数据库连接后立即设置编译指示。

所以你的代码应该看起来像这样:

// 1. open the connection
...

// 2. set the pragma
if (sqlite3_exec(dbEmployee, @"PRAGMA foreign_keys = ON", 0, v, &errmsg) != SQLITE_OK)
{
NSLog(@"failed to set the foreign_key pragma");
return -1;
}

关于iphone - 外键约束不能通过程序工作,但可以与终端一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com