Mysql
 sql >> Database >  >> RDS >> Mysql

Obiettivo-C e MySQL

Non esiste un'API Objective-C fornita da Apple per MySQL. Tuttavia, esistono alcuni wrapper di terze parti dell'API C. Dai un'occhiata al MySQL-Cocoa Framework , per esempio.

Data la tua familiarità con PHP e C API, potrebbe essere più semplice utilizzare semplicemente l'API C. Dovrai gestire la conversione tra oggetti e tipi di dati C, ma non è molto lavoro.

Modifica

Stai andando in crash perché il valore della riga restituito dall'API mysql non è un oggetto e la tua stringa di formato dice NSLog per trattarlo come uno. Il %@ è un segnaposto format-string per un oggetto, non un tipo di dati C.

Non è chiaro quale sia il valore in questo caso. Il contesto sembra implicare che si tratti di dati di immagine. In tal caso, probabilmente vorrai creare un NSData oggetto dal BLOB restituito dalla query, ad esempio:

NSData    *imageData;

imageData = [[ NSData alloc ] initWithBytes: row[ i ] length: lengths[ i ]];
NSLog( @"imageData: %@", imageData );
/* ...create NSImage, CGImage, etc... */
[ imageData release ];

Se i tuoi campi dei risultati sono solo stringhe, usa NSString 's -initWithBytes:length:encoding: metodo:

NSString    *s;

s = [[ NSString alloc ] initWithBytes: row[ i ] length: lengths[ i ]
                        encoding: NSUTF8StringEncoding ];
NSLog( @"result column %d: %@", i, s );
[ s release ];