我有一个数据库表,其中有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时,它不会插入并且我的应用程序崩溃。