如何避免在iPhone中的sqlite数据库中插入空值

时间:2012-06-07 06:42:12

标签: iphone objective-c

我有一个数据库表,其中有5列,并且都不是空列。我有一个条件,当任何一个列值包含空值时,不得在iPhone中的sqlite数据库中插入该特定行。我想要在insert语句期间,如果任何列返回NULL值,则不能将整行插入到insert语句的sqlite数据库中。 这是我的代码:

-(void)insert
{
    NSString *filePath = [BaseModal getDBPath];
    NSLog(@"this check:%@",filePath);
    sqlite3 *database;
    NSDate* date = [NSDate date];

    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];

    [formatter setDateFormat:@"yyyy-mm-dd HH:MM:SS"];

    NSString* str = [formatter stringFromDate:date];

    if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) {
        const char *sqlStatement = "insert into Archive(VideoId,VideoURL,LastUpdateDtm,FunnynessPercentage,IsDeleted,IsArchive) VALUES(?,?,?,?,?,?)";

        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
        {
                sqlite3_bind_int(compiledStatement, 1, VideoId);    
                sqlite3_bind_text(compiledStatement, 2, [ArchUrl UTF8String],-1, SQLITE_TRANSIENT);
                sqlite3_bind_text(compiledStatement, 3, [str UTF8String],-1, SQLITE_TRANSIENT); 
                sqlite3_bind_double(compiledStatement, 4, favMeasure);
                sqlite3_bind_double(compiledStatement, 5, IsDelete);
                sqlite3_bind_double(compiledStatement, 6,IsArchive);
        }
        if(sqlite3_step(compiledStatement) != SQLITE_DONE ) {
            NSLog( @"Save Error: %s", sqlite3_errmsg(database) );
        }
    }
    sqlite3_close(database);    
}

问题在于Url null正在返回,因此当我插入null时,它不会插入并且我的应用程序崩溃。

0 个答案:

没有答案