Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Eine Classe für Mysql-Zugriff erstellen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.06.2005, 15:30 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


vielleicht findet er den mysql.h-header nicht und kann deshalb die funktionen vom mysql nicht finden. du bindest ihn ja mit "mysql.h" ein, so muss er im gleichen Verzeichnis wie deine quellcode-dateien sein. mit <mysql.h> sucht er sie in den default-include-verzeichnissen...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.06.2005, 16:02 Uhr
~wcCPP
Gast



Zitat von FloSoft:
vielleicht findet er den mysql.h-header nicht und kann deshalb die funktionen vom mysql nicht finden. du bindest ihn ja mit "mysql.h" ein, so muss er im gleichen Verzeichnis wie deine quellcode-dateien sein. mit <mysql.h> sucht er sie in den default-include-verzeichnissen...


Doch, doch, es gibt alles, was das programm braucht.

Es kann ja ohne Classen-Programmierung laufen. Ausserdem wenn eine Header-Datei fehlt, gibt der Borland Fehlermeldung aus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.06.2005, 16:33 Uhr
~wcCPP
Gast


Sorry, bin selberschuld

Hab ne Sache übersehen. Es hat mit c++ Source-Code an sich nichts zu tun.

FloSoft,

du hattest nicht ganz unrecht. Alle Header waren zwar da, aber man musste noch die libmysql.lib dem Projekt hinzufügen.

Vielen Dank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.06.2005, 17:00 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@wcCPP
du hast ja auch Linker-Fehler geschrieben, da konnte es nicht an dem Header liegen.
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.06.2005, 17:05 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oh hab ich wohl überlesen.
natürlich sollte man die lib mit einbinden
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: