我正在查询关注表是否填充了记录。
NSString *selectSQL = @"SELECT EXISTS(SELECT 1 FROM tableName LIMIT 1)";
const char *selectSQLConstant = [selectSQL UTF8String];
sqlite3_stmt *statement = nil;
if(sqlite3_prepare_v2(_database, selectSQLConstant, -1, &statement, NULL) == SQLITE_OK) {
if (sqlite3_step(statement) == SQLITE_ROW) {
//even if the table is empty, condition is always true.
}
}
sqlite3_finalize(statement);
这是正确的方式还是我需要添加的东西?
更新
我最后改变了我的查询,
NSString *selectSQL = @"SELECT COUNT(*) FROM tableName LIMIT 1";
但我的问题还有?。
答案 0 :(得分:1)
使用此方法:
-(BOOL)recordExistOrNot:(NSString *)query{
BOOL recordExist=NO;
if(sqlite3_open([[self dataFilePath] UTF8String], &database) == SQLITE_OK)
{
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)==SQLITE_OK)
{
if (sqlite3_step(statement)==SQLITE_ROW)
{
recordExist=YES;
}
else
{
//////NSLog(@"%s,",sqlite3_errmsg(database));
}
sqlite3_finalize(statement);
sqlite3_close(database);
}
}
return recordExist;
}
如果记录不存在,它将返回YES。例如:
NSString *query = [NSString stringWithFormat:@"select * from yourtable where column_name = 'column_name'"];
NSLog(@"query : %@",query);
BOOL recordExist = [self recordExistOrNot:query];
if (!recordExist) {
// Insert your data
}
希望它对你有所帮助。
答案 1 :(得分:1)
NSString *selectSQL = @"SELECT COUNT(*) FROM tableName LIMIT 1";
检查表中至少有一个条目...如果那就是你想要的,这很好