Objective-C et MySQL

J'ai été en mesure de se connecter à une base de données MySQL dans mon application et l'utilisation de l'API C qui est presque exactement comme les commandes PHP (mysql_real_connect(), mysql_query(), mysql_fetch_array(), etc.) et dont je suis assez à l'aise avec, je ne suis pas sûr de savoir comment les données de la requête est renvoyée. Dois-je utiliser un tableau ou un dictionnaire et puis comment pourrais-je l'analyser. Par exemple, en PHP, je voudrais faire quelque chose comme ça (après la connexion):

$results = mysql_query("SELECT * FROM theDatabase"); 
if (mysql_num_rows($results) > 0) { 
    while($row = mysql_fetch_array($results)) {
       print $row;
    }
}

Quel serait l'objective-c équivalent? Merci.

Edit:

OK, donc j'ai fait des progrès: je peux faire la requête et obtenir le nombre de champs/lignes retournées, n'arrive pas à accéder à la donnée elle-même. Voici mon code, j'ai cousu ensemble de la base de données MySQL docs et quelques autres sites:

- (IBAction)dbConnect:(id)sender {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "10.1.1.99", "******", "******", "oldphotoarchive", 0, NULL, 0)) {
NSLog(@"%@", [NSString stringWithUTF8String:mysql_error(&mysql)]);
} else { 
MYSQL_RES *result;
MYSQL_ROW row;
unsigned int num_fields;
unsigned int num_rows;
unsigned long *lengths;
if (mysql_query(&mysql,"SELECT * FROM photorecord")) {
//error
} else { //query succeeded, process any data returned by it  
result = mysql_store_result(&mysql);
if (result)  {
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result))) {
lengths = mysql_fetch_lengths(result);
for(int i = 0; i < num_fields; i++) {
//the line below is my problem, printing row[i] fails, I get the GNU gdb error...
row[i] ? NSLog(@"%@", row[i]) : NSLog(@"wtf");
}
}
} else  {//mysql_store_result() returned nothing; should it have?
if (mysql_errno(&mysql)) {
NSLog(@ "Error: %s\n", mysql_error(&mysql));
} else if (mysql_field_count(&mysql) == 0) {
//query does not return data
//(it was not a SELECT)
num_rows = mysql_affected_rows(&mysql);
}
}
}
}
[pool release];
}
InformationsquelleAutor PruitIgoe | 2011-05-18