2012-02-13 185 views
1

这是我调用并传递一个变量的SQLite代码。问题在哪里?SQLite插入在模拟器中工作,但不在设备上

-(IBAction)insertPet:(NSString *) name{ 

NSString *query = [NSString stringWithFormat:@"Insert into pet (name) values ('%@');", name]; 
sqlite3_stmt *statement; 

NSLog(@"1 - %@",query); 

if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)==SQLITE_OK) 
{ 

    NSLog(@"2 - %@",query); 

    if(SQLITE_DONE == sqlite3_step(statement)){ 

     NSLog(@"Query - %@",query); 
    } 
    sqlite3_finalize(statement); 
} 
} 
+0

NSLog(@“1 - %@”,查询)和NSLog(@“2 - %@”,查询)通过。无法达到NSLog(@“查询 - %@”,查询)。 – ksprs8 2012-02-13 13:46:29

+0

如果你告诉我们错误信息是什么,它会有很大的帮助... – 2012-02-13 13:51:50

回答

0

我的猜测是你的数据库被放置在应用程序包中。如果是这样的话,您将不得不创建一个可写入的数据库副本,以便能够执行更改数据库的查询(如INSERT或UPDATE)。这样做的最普遍的方式是将数据库从数据包复制到Documents文件夹。

+0

你能提供一些代码/建议如何做到这一点? – Richard 2013-05-28 11:16:38

+0

当然,使用[NSFileManager方法](https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSFileManager/copyItemAtPath:toPath:error :)进行复制。为了让你的文件路径检查[这里](http://stackoverflow.com/questions/5508433/using-nssearchpathfordirectoriesindomains-properly) – lawicko 2013-05-28 15:22:06

0

我的工作是从设备上删除应用程序,重新启动设备,清除Xcode中的应用程序,然后再次加载它,同时检查数据库上是否选择了Target Membership。

相关问题