Zentrale Datenbank Anbindung
-
Hallo,
ich habe mehrere Funktionen die eine Verbindung zur Datenbank brauchen und da wäre es ja blöd für jede Funktion eine Verbindung herzustellen. Daher möchte ich bevor die ganzen Funktionen includet werden, bereits eine Verbindung zur Datenbank herstellen und diese dann weitergeben nur ich weiß jetzt nicht genau wie ich da vorgehen kann.
Soll ich eine Funktion schreiben oder einfach in der main(cpp) ganz oben die Verbindung
herstellen.MYSQL *connection, mysql; /* connect to the mySQL database at test.domain.de */ mysql_init(&mysql); /* Mit dem Server verbinden */ connection =mysql_real_connect ( &mysql, /* Zeiger auf MYSQL-Handler*/ "localhost", /* Host-Name*/ "root", /* User-Name*/ "12", /* Passwort für user_name */ NULL, /* Name der Datenbank*/ 0, /* Port (default=0) */ NULL, /* Socket (default=NULL)*/ 0 /* keine Flags */ ) ;
Und das nächste Problem wäre wie ich aus den Funktionen auf &mysql zugreifen kann.
-
themonk schrieb:
und da wäre es ja blöd für jede Funktion eine Verbindung herzustellen.
Wieso? Im Gegensatz dazu schaffst du eine Menge Abhängigkeiten wenn du jedesmal die Verbindung zwischen den einzelnen Objekten rumreichst zumal mit Connection pooling das Leistungsverhalten so schlecht nicht sein sollte.
Wenn du alles im Form hast kannst du die Verbindung als Member des Forms machen und im Kontruktor öffnen. Wenn du das über mehrere Forms brauchst, kannst eine Fabrik bauen, die eine statische Methode besitzt welche eine Verbindung zurückgibt. Wenn du sie zum ersten Mal aufrufst, liest sie die Verbindungsdaten aus, erzeugt das Objekt speicherst sie zwischen und gibt sie dem Klient. Bei nachfolgenden Aufrufen wird einfach das zwischengespeicherte Objekt wieder gegeben. Schau mal nach Singleton/Factory patterns.
-
Im Gegensatz dazu schaffst du eine Menge Abhängigkeiten wenn du jedesmal die Verbindung zwischen den einzelnen Objekten rumreichst zumal mit Connection pooling das Leistungsverhalten so schlecht nicht sein sollte.
Aber angenommen es ändern sich mal die Zugangsdaten der Datenbank dann müsste ich erstmal suchen wo ich überall eine Verbindung herstellt habe.
Und zum anderen hatte ich das bereits, doch nach einer gewissen Zeit bekomme ich die Fehlermeldung:Too many connections.Denn rest habe ich nicht wirklich verstanden.
-
...