2012-04-28 29 views
2

我有我的表中的外键约束,但是当我插入数据使用终端它工作正常,但是当我在Xcode项目中它做它不工作 什么可能是问题。 如何通过程序启用杂注foreign_keys = ON。 我使用下面的代码插入,但我认为外键没有启用。 只是告诉我如何通过程序启用外键。外键约束不能通过program.but使用终端

+(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;} 

回答

4

您应该能够像运行更标准的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; 
} 
+0

谢谢........现在运转 – iosDev 2012-04-28 10:12:38