Objective c SQLite,目标C:方法返回int max值
此方法中的数学返回int的最大值。错误在哪里?如何以从db返回实际值的方式进行管理?先谢谢你Objective c SQLite,目标C:方法返回int max值,objective-c,cocoa-touch,sqlite,Objective C,Cocoa Touch,Sqlite,此方法中的数学返回int的最大值。错误在哪里?如何以从db返回实际值的方式进行管理?先谢谢你 编辑:您没有错误处理,绑定到不存在的参数,代码缩进错误,并且读取的数据类型错误 使用类似以下内容: -(int)countTheNumberOfDublicatesForType:(int)typeID { NSInteger quantity=0; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NS
编辑:您没有错误处理,绑定到不存在的参数,代码缩进错误,并且读取的数据类型错误 使用类似以下内容:
-(int)countTheNumberOfDublicatesForType:(int)typeID
{
NSInteger quantity=0;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:user_data];
sqlite3* database = NULL;
sqlite3_stmt *statement;
if(sqlite3_open([path UTF8String], &database) == SQLITE_OK)
{
const char *sqlQuery=sqlite3_mprintf("SELECT COUNT(refID)\
FROM dublicates\
WHERE typeREF=%i",typeID);
if(sqlite3_prepare_v2(database, sqlQuery,-1, &statement, NULL) == SQLITE_OK)
sqlite3_bind_int(statement, 1,typeID);
if(sqlite3_step(statement) == SQLITE_ROW)
{
quantity = sqlite3_column_int(statement, 0);
}
sqlite3_finalize(statement);
sqlite3_free((char*)sqlQuery);
sqlite3_close(database);
}
else
{
//
}
return quantity;
}
返回NUM,如169626256对于使用sqlite数据库的方法的返回时间是否有任何限制。看起来,当我在另一个类中调用此meth时,它需要一个NSMutableArray作为其返回类型。请参阅编辑。方法签名和数据库之间没有关系。该方法使用您为其声明的任何返回类型。
if (sqlite3_open([path UTF8String], &database) != SQLITE_OK) {
sqlite3_errmsg(database); // log or print this
sqlite3_close(database);
return 0;
}
if (sqlite3_prepare_v2(database,
"SELECT COUNT(refID) FROM dublicates WHERE typeREF=?",
-1, &statement, NULL) != SQLITE_OK) {
sqlite3_errmsg(database); // log or print this
sqlite3_close(database);
return 0;
}
sqlite3_bind_int(statement, 1, typeID);
if (sqlite3_step(statement) != SQLITE_ROW)
sqlite3_errmsg(database); // log or print this
else
quantity = sqlite3_column_int(statement, 0);
sqlite3_finalize(statement);
sqlite3_close(database);