Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Objective-C und MySQL

Es gibt keine von Apple bereitgestellte Objective-C-API für MySQL. Es gibt jedoch einige Drittanbieter-Wrapper der C-API. Sehen Sie sich das MySQL-Cocoa Framework , zum Beispiel.

Angesichts Ihrer Vertrautheit mit der PHP- und C-API ist es für Sie möglicherweise einfacher, einfach die C-API zu verwenden. Sie müssen sich um die Konvertierung zwischen Objekten und C-Datentypen kümmern, aber das ist nicht viel Arbeit.

Bearbeiten

Sie stürzen ab, weil der von der mysql-API zurückgegebene Zeilenwert kein Objekt ist und Ihre Formatzeichenfolge NSLog mitteilt es als eins zu behandeln. Der %@ ist ein Format-String-Platzhalter für ein Objekt, kein C-Datentyp.

Es ist nicht klar, was der Wert in diesem Fall ist. Der Kontext scheint zu implizieren, dass es sich um Bilddaten handelt. In diesem Fall möchten Sie wahrscheinlich NSData erstellen Objekt aus dem von der Abfrage zurückgegebenen Blob, z. B.:

NSData    *imageData;

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

Wenn Ihre Ergebnisfelder nur Zeichenfolgen sind, verwenden Sie NSString 's -initWithBytes:length:encoding: Methode:

NSString    *s;

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