000
02.06.2005, 15:16 Uhr
~wcCPP
Gast
|
Hallo zusammen,
ich bräuchte eure Hilfe bzw. Erklärung.
Und zwar versuche ich eine Klase zu definieren, mit Hilfe deren die Kommunikation mit dem MySQL-Server stattfindet.
In der ersten Linie geht es darum, dass ich eine Instanz von der Klasse "mysql_handling" erstelle und so die Verbindung bzw. Trennen mit MySQL organisiere.
C++: |
#include <windows.h> #include "mysql.h" #include <stdio.h> #include <string.h> #include <iostream.h>
class mysql_handling { private:
MYSQL *mysqlHandle; char myHost[50]; char myName[50]; char myPassword[50]; char myDB[50];
public:
mysql_handling(char* ,char* , char* , char* ); ~mysql_handling(); void connection(); void conn_break();
};
mysql_handling::mysql_handling(char curHost[50],char curName[50], char curPass[50], char curDB[50]) {
mysqlHandle=new MYSQL; strcpy(myHost,curHost); strcpy(myName,curName); strcpy(myPassword,curPass); strcpy(myDB,curDB);
mysql_init(mysqlHandle); mysql_options(mysqlHandle,MYSQL_READ_DEFAULT_GROUP,"v.0.1");
}
mysql_handling::~mysql_handling() { delete mysqlHandle; }
void mysql_handling::connection() { if (!mysql_real_connect(mysqlHandle,myHost,myName,myPassword,myDB,0,NULL,0)) { cout << "Die Verbindung fehlgeschlagen" <<endl; } else { cout << "Die Verbindung ist da" << endl; } }
void mysql_handling::conn_break() { mysql_close(mysqlHandle); }
void main() { mysql_handling *mysqlObject; mysqlObject=new mysql_handling "localhost","testuser","test","testdb"); mysqlObject->connection(); delete mysqlObject;
char p[50]; cin.getline(p,50); }
|
Wenn ich auf OOP verzichte, funktioniert die Idee. Aber in der OOP-Version funktioniert nicht und zwar es tauchen die Fehlermeldungen auf, dass die Linker-Fehler mit "mysql_init", "mysql_options" und "mysql_real_connection" aufgetreten sind. Also alle Mysql-Funktionen, die mit mysqlHandle arbeiten.
Ich versteh nicht warum. Die Methoden können doch auf Eigenschaften zugreifen. In diesem Fall kann aber wohl nicht wirklich auf "mysqlHandle" zugegriffen werden. Ich habe auch spasshalber die Definition "MYSQL *mysqlHandle;" direkt in der Methode "mysql_handling::mysql_handling" definiert und dann hatte ich Linker-Problem nur mit "mysql_real_connection".
Ich verstehe nicht, warum passiert so was? Könnt ihr mir das bitte erklären, ich greife doch über Methoden auf die Eigenschaft. Was kann man da doch noch machen.
Vielen Dank!
P.S. Bin noch Anfänger, also bitte nicht verprügeln :-) Ich benutze übrigens Builder c++ 6 pro |