【问题标题】:can't figure why insert sqlite sql statement is not being executed , Xcode无法弄清楚为什么插入 sqlite sql 语句没有被执行,Xcode
【发布时间】:2012-06-27 02:34:16
【问题描述】:

一切对我来说都很好,但是 prepare_v2 没有得到 SQLITE_OK

sql 指令非常基本,如果我将它复制并粘贴到 sqlite 管理器上,它会很好地插入

我有什么遗漏吗?

//from view controller

- (void)viewDidLoad
{
[super viewDidLoad];

DBConnection* dbCon = [DBConnection alloc];
[dbCon init];
[dbCon InsertDataRollNo:@"888"];

}

-(id)init
{
//[super init];

DBName = @"FoodDB2.sqlite";

NSArray* documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString* documentsDir = [documentsPath objectAtIndex:0];
DBPath = [documentsDir stringByAppendingPathComponent:DBName];

return self;

}

-(void)InsertDataRollNo:(NSString*)theName
{
[self CheckAndCreateDB];

sqlite3* database;

if(sqlite3_open([DBPath UTF8String], &database)== SQLITE_OK)
{
    NSString* statement;
    sqlite3_stmt* compliedStatement;

    //statement = [[NSString alloc]initWithFormat:@"insert into Category(TheName)values('%d')",@"epa"];
    statement = @"insert into Category(TheName)values('aaa')";
    const char* sqlStatement = [statement UTF8String];

    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compliedStatement, NULL) == SQLITE_OK)
    {
        if(SQLITE_DONE!=sqlite3_step(compliedStatement))
        {
            NSAssert1(0,@"Error by inserting '%s' ", sqlite3_errmsg(database));

        }
        else
        {
            NSAssert1(0,@"cool '%s' ", @"ope");
        }
    }           
    sqlite3_finalize(compliedStatement);
}
sqlite3_close(database);

}

-(void)CheckAndCreateDB

{



  BOOL success;

NSFileManager* fileManager = [NSFileManager defaultManager];

success = [fileManager fileExistsAtPath:DBPath];

if(success) return;

NSString* databasePathFromApp = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:DBName];

[fileManager copyItemAtPath:databasePathFromApp toPath:DBPath error:nil];

//[fileManager release];

}

【问题讨论】:

  • 确保路径正确并且您对文件有写入权限。还是不行?
  • 路径正确,文件权限是什么意思? mac文件系统写权限?我向所有人添加了对 sqlite 文件的文件系统写入权限,但仍然失败
  • 你能发布你的-CheckAndCreateDB吗?
  • 我刚刚做了,我也发布了init方法来启动db和我的视图控制器调用它
  • 你说它没有返回SQLITE_OK。那么它返回了什么?

标签: xcode sqlite


【解决方案1】:

我想通了,其实我并没有将sqlite文件复制到iPhone项目中,现在运行良好

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多