Objective-C en MySQL
19 september 2006 - 18:15   
geplaatst door: MikeyNL
Ik ben van de week beginnen met programmeren in Objective-C / cocoa op de mac, maar ik dacht dat dit topic beter paste in programmeren dan in het forum over de Mac, omdat het (waarschijnlijk ook over gewoon C gaat).

Ik heb dus van de week eerst een paar tutorials gedaan over cocoa, en heb toen zelfstandig een simpele rekenmachine in elkaar geflanst, so far, so good.

Maar, omdat het uiteindelijke doel een applicatie is die met een MySQL database gaat communiceren is, wilde ik nu proberen een connectie te maken met MySQL en daar iets nuttigs mee te gaan doen.

Bij het zoeken naar informatie ben ik kortweg twee mogelijkheden tegengekomen:
- Het gebruiken van een Objective-C Framework MySQL-Cocoa
- Het gebruiken van de MySQL C api (Objective-C is een supertaal iets op C, en dus kan het normale C code verwerken (toch?))

Ik wilde dus eerst de simpele oplossing proberen, de C api gebruiken van MySQL, wat resulteerde in het volgende:


#import <Cocoa/Cocoa.h>
#import </usr/local/mysql/include/mysql.h>

int main(int argc, char *argv[]){
   
   MYSQL *conn;

   char *server = "localhost";
   char *user = "root";
   char *password = "test";
   char *database = "blauw";
   
   mysql_real_connect(conn,server,user,password,database,0,NULL,0);
   
   return NSApplicationMain(argc,  (const char **) argv);
}

Gewoon een stukje waarmee de database connectie opgezet zou worden. Volgens de docs op MySQL.com zou het zo moeten werken, maar ik krijg nu de volgende error:


ZeroLink: unknown symbol '_mysql_real_connect'

database2 has exited due to signal 6 (SIGABRT).


Zoeken op google levert helaas weinig op, het enige nuttige wat ik kon vinden was dat SIGABRT een error was waarmee C programma's onbedoeld stoppen.... maar daar was ik al achter

Er staat echter iets vermeld over unknown symbol, wat zou betekenen dat die methode niet in de klasse voorkomt, maar dat lijkt me sterk. De header file kan gewoon geopend worden (juiste rechten) en ik kan er wel in zoeken, maar wat er in die file staat is nog een beetje te ver gegrepen voor mij.

(Bewerkt door MikeyNL om 18:17, 19-09-2006)

Objective-C en MySQL
19 september 2006 - 19:10    reactie #1
geplaatst door: BraboMac
Ik heb een typfout ontdekt. je moet namelijk &conn meegeven i.p.v. conn in de regel met mysql_real_connect.

Verder is het niet te adviseren om int main(...) aan te passen in Cocoa. Alternatieven vind je in documentatie van Apple.

PS: Ja, je hebt de juiste plek gevonden om je vraag te posten. Welkom op het forum!

Big Nerd Ranch blogs for Mac developers (and Nerds)
Er bestaan slechts 10 soorten mensen op deze aarde: Zij die binair kunnen rekenen en zij die dat niet kunnen.