diff options
Diffstat (limited to 'CMMCPResult.m')
-rw-r--r-- | CMMCPResult.m | 166 |
1 files changed, 84 insertions, 82 deletions
diff --git a/CMMCPResult.m b/CMMCPResult.m index a41ce84d..f80ff5c3 100644 --- a/CMMCPResult.m +++ b/CMMCPResult.m @@ -27,16 +27,16 @@ @implementation CMMCPResult -- (id) fetchRowAsType:(MCPReturnType) aType -/*" +/* modified version for use with sequel-pro -"*/ +*/ +- (id)fetchRowAsType:(MCPReturnType)aType { - MYSQL_ROW theRow; - unsigned long *theLengths; - MYSQL_FIELD *theField; + MYSQL_ROW theRow; + unsigned long *theLengths; + MYSQL_FIELD *theField; int i; - id theReturn; + id theReturn; if (mResult == NULL) { // If there is no results, returns nil, as after the last row... @@ -48,98 +48,100 @@ modified version for use with sequel-pro return nil; } - switch (aType) { - case MCPTypeArray: - theReturn = [NSMutableArray arrayWithCapacity:mNumOfFields]; - break; - case MCPTypeDictionary: - if (mNames == nil) { - [self fetchFieldNames]; - } - theReturn = [NSMutableDictionary dictionaryWithCapacity:mNumOfFields]; - break; - default : - NSLog (@"Unknown type : %d, will return an Array!\n", aType); - theReturn = [NSMutableArray arrayWithCapacity:mNumOfFields]; - break; - } + switch (aType) { + case MCPTypeArray: + theReturn = [NSMutableArray arrayWithCapacity:mNumOfFields]; + break; + case MCPTypeDictionary: + if (mNames == nil) { + [self fetchFieldNames]; + } + theReturn = [NSMutableDictionary dictionaryWithCapacity:mNumOfFields]; + break; + default : + NSLog (@"Unknown type : %d, will return an Array!\n", aType); + theReturn = [NSMutableArray arrayWithCapacity:mNumOfFields]; + break; + } - theLengths = mysql_fetch_lengths(mResult); - theField = mysql_fetch_fields(mResult); + theLengths = mysql_fetch_lengths(mResult); + theField = mysql_fetch_fields(mResult); - for (i=0; i<mNumOfFields; i++) { - id theCurrentObj; + for (i=0; i<mNumOfFields; i++) { + id theCurrentObj; if (theRow[i] == NULL) { theCurrentObj = [NSNull null]; - } - else { - char *theData = calloc(sizeof(char),theLengths[i]+1); - // char *theUselLess; - memcpy(theData, theRow[i],theLengths[i]); - theData[theLengths[i]] = '\0'; + } else { + char *theData = calloc(sizeof(char),theLengths[i]+1); + //char *theUselLess; + memcpy(theData, theRow[i],theLengths[i]); + theData[theLengths[i]] = '\0'; - switch (theField[i].type) { - case FIELD_TYPE_TINY: - case FIELD_TYPE_SHORT: - case FIELD_TYPE_INT24: - case FIELD_TYPE_LONG: - case FIELD_TYPE_LONGLONG: - case FIELD_TYPE_DECIMAL: - case FIELD_TYPE_FLOAT: - case FIELD_TYPE_DOUBLE: - case FIELD_TYPE_NEW_DECIMAL: - case FIELD_TYPE_TIMESTAMP: - case FIELD_TYPE_DATE: - case FIELD_TYPE_TIME: - case FIELD_TYPE_DATETIME: - case FIELD_TYPE_YEAR: - case FIELD_TYPE_VAR_STRING: - case FIELD_TYPE_STRING: - case FIELD_TYPE_SET: - case FIELD_TYPE_ENUM: - case FIELD_TYPE_NEWDATE: // Don't know what the format for this type is... - theCurrentObj = [self stringWithCString:theData]; - break; - case FIELD_TYPE_TINY_BLOB: - case FIELD_TYPE_BLOB: - case FIELD_TYPE_MEDIUM_BLOB: - case FIELD_TYPE_LONG_BLOB: - theCurrentObj = [NSData dataWithBytes:theData length:theLengths[i]]; + switch (theField[i].type) { + case FIELD_TYPE_TINY: + case FIELD_TYPE_SHORT: + case FIELD_TYPE_INT24: + case FIELD_TYPE_LONG: + case FIELD_TYPE_LONGLONG: + case FIELD_TYPE_DECIMAL: + case FIELD_TYPE_FLOAT: + case FIELD_TYPE_DOUBLE: + case FIELD_TYPE_NEW_DECIMAL: + case FIELD_TYPE_TIMESTAMP: + case FIELD_TYPE_DATE: + case FIELD_TYPE_TIME: + case FIELD_TYPE_DATETIME: + case FIELD_TYPE_YEAR: + case FIELD_TYPE_VAR_STRING: + case FIELD_TYPE_STRING: + case FIELD_TYPE_SET: + case FIELD_TYPE_ENUM: + case FIELD_TYPE_NEWDATE: // Don't know what the format for this type is... + theCurrentObj = [self stringWithCString:theData]; + break; + + case FIELD_TYPE_TINY_BLOB: + case FIELD_TYPE_BLOB: + case FIELD_TYPE_MEDIUM_BLOB: + case FIELD_TYPE_LONG_BLOB: + theCurrentObj = [NSData dataWithBytes:theData length:theLengths[i]]; if (!(theField[i].flags & BINARY_FLAG)) { // It is TEXT and NOT BLOB... theCurrentObj = [self stringWithText:theCurrentObj]; - } //#warning Should check for TEXT (using theField[i].flag BINARY_FLAG) + } // #warning Should check for TEXT (using theField[i].flag BINARY_FLAG) break; - case FIELD_TYPE_NULL: + case FIELD_TYPE_NULL: theCurrentObj = [NSNull null]; break; - - default: - NSLog (@"in fetchRowAsType : Unknown type : %d for column %d, send back a NSData object", (int)theField[i].type, (int)i); - theCurrentObj = [NSData dataWithBytes:theData length:theLengths[i]]; - break; - } + + default: + NSLog (@"in fetchRowAsType : Unknown type : %d for column %d, send back a NSData object", (int)theField[i].type, (int)i); + theCurrentObj = [NSData dataWithBytes:theData length:theLengths[i]]; + break; + } + + free(theData); - free(theData); // Some of the creators return nil object... - if (theCurrentObj == nil) { - theCurrentObj = [NSNull null]; - } - } + if (theCurrentObj == nil) { + theCurrentObj = [NSNull null]; + } + } - switch (aType) { - case MCPTypeDictionary : - [theReturn setObject:theCurrentObj forKey:[mNames objectAtIndex:i]]; - break; + switch (aType) { + case MCPTypeDictionary : + [theReturn setObject:theCurrentObj forKey:[mNames objectAtIndex:i]]; + break; + case MCPTypeArray : - default : - [theReturn addObject:theCurrentObj]; - break; - } - } + default : + [theReturn addObject:theCurrentObj]; + break; + } + } - return theReturn; + return theReturn; } @end |