Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » MySQL Datenbank -> Zugriff

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 < [ 2 ]
000
06.02.2006, 12:50 Uhr
~Tobi-Wan-Kenobi
Gast


Ich versuche mit VC++ auf meine XAMPP MySQL Datenbank zuzugreifen, funktioniert nicht.

Von der Seite http://tangentsoft.net/mysql++/ hab ich mir ein mysql Package runtergeladen und in einen ordner entpackt.

Den ordner hab ich dann wie folgt VC++ 2005 bzw. dem Projekt bekannt gemacht:

Zitat:

Global:
Manü: "Extras|Optionen|Projekte und Projektmappen|VC++-Verzeichnisse"
Projekt:
Menü: "Projekt|Eigenschaften|Konfigurationseigenschaften|C/C++|Allgemein|Zusätzliche Includeverzeichnisse" und "...|Linker|Allgemein|Zusätzliche Bibliotheksverzeichnisse"


Wenn ich jetzt in einem normalen, leeren Programme, die Headerdatei mysql++.h einbinden will wird die nicht gefunden. Was mach ich falsch?

Danke für Hilfe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.02.2006, 18:15 Uhr
xXx
Devil


du musst die <mysql.h> includieren... vllt hilft dir ne kleine Klasse die ich dazu mal geschrieben hab...


C++:
class CDevilMySQLClient
{
public:
    CDevilMySQLClient(void);
    ~CDevilMySQLClient(void);

protected:
    MYSQL        *m_pConnection;            // pointer the MYSQL structure
    MYSQL_RES    *m_pResult;                // pointer to the result set structure
    MYSQL_ROW    m_Row;                    // row information
    char*        m_pcDB;                    // Database
    char*        m_pcPW;                    // Password
    char*        m_pcUser;                // Username
    char*        m_pcHost;                // Server
    char        m_cQuery[256];            // Queries

    // Test! - brauchst de net ;)
    CListCtrl    *m_pListCtrl;    // Pointer to the ListCtrl which stores the query information.

public:
    bool Init(MYSQL* pMySQL = NULL, CDevilSkinListCtrl *pListCtrl = NULL);    // Initialize the MYSQL structure
    bool Connect(const char* cDB, const char* cServer, const char* cPasswort, const char* cAccount); // Connect the MYSQL Strukture with a Server
    void Close(MYSQL* pMySQL = NULL);    // Close the MYSQL structure
    bool Exit();                        // Control that the MYSQL structure is deleted.
    bool Query(char* pcQuery);            // ...
};




C++:
CDevilMySQLClient::CDevilMySQLClient(void)
{
    m_pcDB            = 0;
    m_pcHost        = 0;
    m_pcPW            = 0;
    m_pcUser        = 0;
    m_pConnection    = NULL;
    m_pResult        = NULL;
    m_Row            = NULL;
    m_pListCtrl        = NULL;
}

CDevilMySQLClient::~CDevilMySQLClient(void)
{
    Exit();
}

bool CDevilMySQLClient::Init(MYSQL* pMySQL, CDevilSkinListCtrl *pListCtrl)
{
    if(pMySQL != NULL)
        m_pConnection = mysql_init(pMySQL);
    else
        m_pConnection = mysql_init(NULL);

    if(!m_pConnection)
        return false;
    
    if(!pListCtrl)
        return false;
    
    m_pListCtrl = pListCtrl;

    return true;
}

bool CDevilMySQLClient::Connect(const char* cDB, const char* cServer, const char* cPasswort, const char* cAccount)
{
    if (!mysql_real_connect(m_pConnection, cServer, cAccount, cPasswort, cDB, 0, NULL, 0))
        return false;

    strcpy(m_pcDB, cDB);
    strcpy(m_pcHost, cServer);
    strcpy(m_pcPW, cPasswort);
    strcpy(m_pcUser, cAccount);

    return true;
}

bool CDevilMySQLClient::Query(char* pcQuery)
{
    if(!mysql_query(m_pConnection, pcQuery))        //query the database
        return false;

    m_pResult = mysql_store_result(m_pConnection);

    char szMessage[128];
    sprintf(szMessage, "Number of entries in the database: %d", mysql_num_rows(m_pResult)); // Das ist nur zum Test... also ich guck noch wie viele Items mir mit dem Query zurück geliefert wurden ;)
    m_pListCtrl->InsertItem(m_pListCtrl->GetItemCount()+1, szMessage);

    mysql_free_result(m_pResult);
    
    return true;
}

void CDevilMySQLClient::Close(MYSQL* pMySQL)
{
    if(pMySQL)
        mysql_close(pMySQL);
    else
        mysql_close(m_pConnection);
}

bool CDevilMySQLClient::Exit()
{
    if(m_pConnection)
        m_pConnection = NULL;

    if(m_pConnection != NULL)
        return false;

    if(m_pResult)
        m_pResult = NULL;

    if(m_pListCtrl)
        m_pListCtrl = NULL;

    return true;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.02.2006, 12:21 Uhr
~Tobi-Wan-Kenobi
Gast


In meinem mysql ordner gibts keine mysql.h sonder nur eine mysql++.h - binde ich diese ein läuft der compiler auf den fehler das er die mysql.h nicht finden kann.....

wo kann ich den ein komplettes package herbekommen, meins scheint unvollständig zu sein?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.02.2006, 13:06 Uhr
~Tobi-Wan-Kenobi
Gast


Hier mal was ich alles gemacht hab, evtl.s eiht ja einer den fehler:

Hab mir von www.tangentsoft.net/mysql++/ das mysql package: mysql++-2.0.7.tar.gz runtergeladen.

In einen ordner entpackt und den wie folgt VC2005 bekannt gemacht:

Unter:
Menü: "Extras|Optionen|Projekte und Projektmappen|VC++-Verzeichnisse"

Den /lib Ordner als directory für include files angegeben


Dann dem Projekt selbst unter:
Menü: "Projekt|Eigenschaften|Konfigurationseigenschaften|C/C++|Allgemein|Zusätzliche Includeverzeichnisse

Den /lib Ordner für zusätzliche include verzeichniss angegeben.

Unter
Menü: "Projekt|Eigenschaften|Konfigurationseigenschaften|Linker|Allgemein

Ebenfalls den /lib Ordner angelegt, in dem mittlerweile auch eine datei names libmysql.lib hinein kopiert hab(google sagte mir der linker braucht die).

Im System32 ordner von windows liegt zudem noch die libmysql.dll

Funzt so aufjedenfall nicht - kann mir einer sagen ob ich evtl. die falschen files runtergeladen ahb? Den in der Anleitung die dabei ist Readme.vc steht was von einem include ordner der in diesem .tar.gz z.b. nicht drin ist.

Hilfeeee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.02.2006, 19:21 Uhr
xXx
Devil


Hmm... du musst auch den MySQL Server 5.0 im Developer Mode installieren...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.02.2006, 20:38 Uhr
~Tobi-Wan-Kenobi
Gast



Zitat von xXx:
Hmm... du musst auch den MySQL Server 5.0 im Developer Mode installieren...


Ich wollte eine Xampp mysql datenbank verwenden. Wie installiere ich die den im developer mode? Oder was gibt es da zu beachten?

mysql müsste doch mysql sein ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.02.2006, 20:16 Uhr
xXx
Devil


du kannst bei der Installation auswählen, was du für ne DB Art haben willst usw... unter anderem auch, als was du die Verwenden willst... da musst de dann einfach Developer blabla anklicken
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.02.2006, 20:44 Uhr
Noob2k5



Jetzt ist mir auch das passwort meines accounts eingefallen :-), weiter im text:


Zitat von xXx:
du kannst bei der Installation auswählen, was du für ne DB Art haben willst usw... unter anderem auch, als was du die Verwenden willst... da musst de dann einfach Developer blabla anklicken


Ich bin jetzt soweit das er mir mein programm immerhin schonmal kompiliert.

Jetzt scheitere ich daran, dass ich nicht verstehe warum er meine datenbank als localhost bzw. 127.0.0.1 nicht finden.

Hier mal mein Source:

C++:
#include "stdafx.h"
#include <iostream>
#include <winsock.h>
#include <mysql.h>
#include <conio.h>

const char* host = "localhost";
const char* username = "root";
const char* password = "root";
const char* database = "testsystem";

MYSQL *conn;
MYSQL_ROW row;
MYSQL_RES *res_set;

int main(int argc,char* argv[])
{
    conn = mysql_init(NULL);
    if (!conn)
    {
        std::cout<<"Connection init fehlerhaft";
        _getch();
        return 0;
    }
    
    if (mysql_real_connect(conn,host,username,password,database,0,NULL,0) == NULL)
    {
        std::cout<<"Connection Aufbau fehlgeschlagen";
        _getch();
        return 0;
    }

    
    mysql_query(conn,"SELECT * FROM user");
    res_set = mysql_store_result(conn);
    std::cout<<"Anzahl der Zeilen: "<<mysql_num_rows(res_set);
    mysql_close(conn);
    _getch();
    return 0;
}



Er verabschiedet sich bei der mysql_real_connect Funktion - ich verstehe nicht warum. Die SQL Datenbank läuft und ich kann über die commandozeile auch querys absetzen, nur mein programm will nicht dahin connecten.

Dieser Post wurde am 08.02.2006 um 20:45 Uhr von Noob2k5 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.02.2006, 20:57 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du musst entweder unix socket (vorletzter param) oder port (vor-vorletzter param) angeben

Ansonsten lass dir mit mysql_error den fehler ausgeben:


C++:
MYSQL mysql;

mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}



--
class God : public ChuckNorris { };

Dieser Post wurde am 08.02.2006 um 20:59 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
08.02.2006, 21:18 Uhr
Noob2k5




Zitat von FloSoft:
du musst entweder unix socket (vorletzter param) oder port (vor-vorletzter param) angeben

Ansonsten lass dir mit mysql_error den fehler ausgeben:


C++:
MYSQL mysql;

mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}





Der Fehler den mysql_error ausgibt lautet:

Client does not support authentication protocol requested by server; consider upgrading MySQL client



wo kann man den das authentication protocal einstellen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


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: