// // MGMMyResult.m // MGMDB // // Created by Mr. Gecko on 2/13/10. // Copyright (c) 2011 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/ // // Permission to use, copy, modify, and/or distribute this software for any purpose // with or without fee is hereby granted, provided that the above copyright notice // and this permission notice appear in all copies. // // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND // FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, // OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS // ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. // #import "MGMMyResult.h" #import "MGMMyConnection.h" @implementation MGMMyResult + (id)resultWithConnection:(MGMMyConnection *)theConnection { return [[[self alloc] initWithConnection:theConnection] autorelease]; } - (id)initWithConnection:(MGMMyConnection *)theConnection { if (self = [super init]) { connection = [theConnection retain]; result = mysql_store_result([connection MySQLConnection]); if (result==NULL) { [self release]; self = nil; } else { columnCount = [self columnCount]; columnNames = [[self columnNames] retain]; } } return self; } + (id)resultWithConnection:(MGMMyConnection *)theConnection result:(MYSQL_RES *)theResult { return [[[self alloc] initWithConnection:theConnection result:theResult] autorelease]; } - (id)initWithConnection:(MGMMyConnection *)theConnection result:(MYSQL_RES *)theResult { if (self = [super init]) { connection = [theConnection retain]; result = theResult; if (result==NULL) { [self release]; self = nil; } else { columnCount = [self columnCount]; columnNames = [[self columnNames] retain]; } } return self; } - (void)dealloc { mysql_free_result(result); [columnNames release]; [connection release]; [super dealloc]; } - (my_ulonglong)rowCount { if (result!=NULL) return mysql_num_rows(result); return 0; } - (unsigned int)columnCount { if (result!=NULL) return mysql_num_fields(result); return 0; } - (NSArray *)columnNames { columnCount = [self columnCount]; NSMutableArray *names = nil; if (result!=NULL) { names = [NSMutableArray array]; MYSQL_FIELD *columns = mysql_fetch_fields(result); for (int i=0; i[self rowCount] ? [self rowCount]-1 : theRow); mysql_data_seek(result, theRow); } @end