Hilfffeeeeeeeeeeeee !! C++ und Sql Datenbank



  • vielleicht hier noch was interessantes, wenn du es mal benötigst...
    http://www.db4free.net/



  • Hello 😃
    Also ich habe gerade erfahren das der zugriff auf die Datenbank vom Provider erlaubt ist 🙄
    Ich bin also wieder im Rennen..
    Werd wieder versuchen eine Tabelle aus der Datenbank auszulesen.
    Was ich bis jetzt geschafft habe, das ich mich mit dem Server verbinde der mir aber eine Absage erteilt mich mit der Datenbank zu verbinden...... bitte falls irgendwer noch irgendwo schon mal so einen Zugriff von einem selbstprogrammierten c++ Win Api Programm programmiert hat postet mir ein Stück aus dem Quelltext.
    Bitte keine Links mit Beispielen aus dem Google, den die hab ich alle schon durchgelesen. :p



  • Welche Schnittstelle nimmst du denn jetzt ?
    Die C-API von mysql.com (bei den neuen Mysql-Versionen ist die beim mysql-Server-Download dabei)

    Dokumentation dazu hier:
    http://dev.mysql.com/doc/refman/5.0/en/c-api-function-overview.html



  • Hello 😃
    Arbeite mit Visual Studio C++.Net Ver.7
    Das Programm ist auf Win32 Anwendung eingestellt.
    Der Befehl heisst SQLDriverConnect und ist von der Programmiersprache in den ODBC für Win Api der Programmiersprache die ich über sql.h einbinde enthalten.
    Der Befehl selbst funktioniert ja auch, aber die Parameter sind wohl falsch, weil der Server den Zugriff nicht erlaubt... habe jetzt wieder Fortschritte gemacht.. mal sehen... bin dem Ziel schon ein Stück näher 😉



  • Aha, du willst dich also via ODBC mit einem MySQL-Server verbinden ?
    Hast Du auch den ODBC-Treiber für MySQL installiert ?

    Evtl. interessiert dich ja noch:
    http://www.connectionstrings.com/



  • Jo.. und so wie es steht sind die Parameter falsch... so wie überall .. leider
    Wenn ich das so eingebe, meldet der Befehl gleich einen Fehler wegen falscher Parameter.. aber das hab ich schon bereinigt.. soweit funktioniert es ja... ich werd noch ein wenig basteln dann glaub ich hab ichs bald^^
    Es gibt ca.25 verschiedene falsche Parameter Beschreibungen.. hab da aber jetzt was nachgelesen.. da werden die Parameter ganz anders angegeben das versuch ich morgen gleich 😉



  • ja mahlzeit.

    Ich hab das gleiche Problem. Wir haben hier eine Oracle (SQL) Datenbank auf die ich zugreifen muss.

    Man wird ja mit Funktionen zu MySQL totgeschlagen, aber keiner wird mal konkret im www und wenn, dann versteht jemand wich ich - der verständlichen, nicht abgehobenen/übertriebenen PHP Code schreibt - diese Beispiele nicht.

    Wäre ganz cool wenn jemand mal ein paar Basics dazu preisgeben könnte.

    Eins im Voraus mit "Denglish" wie "Wrappen" erregt man höchstens Übelkeit bei mir, was Vertraute darunter verstehen ist mir also unbekannt.

    Vielen Dank für eure Hilfe

    Oklino



  • also ich habe mir jetzt ein paar Beispiele angesehen im Internet und verstehe immernoch nur Bahnhof, weil ständig nur mit den Funktionalitäten des Borland C++ Builder gearbeitet wird. Ich meine, ich will nicht wissen wie ich ein Grid einfüge und mit Leben fülle.

    Mir gehts um die c++ Version von Dingen wie

    mysql_connect("localhost","","root");
    mysql_select_db("miregal");
    moep = mysql_query("select irgendwas from irgendwo");
    moep = mysql_fetch_array(moep);

    Das muss doch mal in ein paar Verständliche Sätze zu fassen sein und nicht in "guck mal auf http://blabla" oder "Select the Table1 object on the form, then set its TableName property to BIOLIFE.DB. (Name is still Table1.) Next, set the Active property to true.
    When you set Active to true, the grid fills with data from the BIOLIFE.DB database table. If the grid doesn't display data, make sure you've correctly set the properties of all the objects on the form, as explained in the instructions above..." - ächz unbrauchbar 😞



  • tss naja... ich geb dir einfach mal nen stückchen source von mir:) : Ist nur nen Teil... der zum connecten... kann dir aber vllt helfen 😃

    // Source
    MySQLClient::MySQLClient()
    {
    	m_pcDB	= 0;
    	m_pcHost	= 0;
    	m_pcPW	= 0;
    	m_pcUser	= 0;
    	m_pMySQL	= NULL;
    }
    
    MySQLClient::~MySQLClient()
    {
    	Exit();
    }
    
    bool MySQLClient::Init(MYSQL* pMySQL)
    {
    	if(pMySQL != NULL)
    		m_pMySQL = mysql_init(pMySQL);
    	else
    		m_pMySQL = mysql_init(NULL);
    
    	if(!m_pMySQL)
    		return false;
    
    	return true;
    }
    
    bool MySQLClient::Connect(const char* cDB, const char* cServer, const char* cPasswort, const char* cAccount)
    {
    	if (!mysql_real_connect(m_pMySQL, 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;
    }
    
    void MySQLClient::Close(MYSQL* pMySQL)
    {
    	if(pMySQL)
    		mysql_close(pMySQL);
    	else 
    		mysql_close(m_pMySQL);
    }
    
    bool MySQLClient::Exit()
    {
    	if(m_pMySQL)
    		m_pMySQL = NULL;
    
    	if(m_pMySQL != NULL)
    		return false;
    
    	FreeMySQLResult();
    
    	return true;
    }
    
    // Header
    class MySQLClient
    {
    public:
    	MySQLClient();
    	~MySQLClient();
    
    	bool Init(MYSQL* pMySQL = NULL);
    	bool Connect(const char* cDB, const char* cServer, const char* cPasswort, const char* cAccount);
    	void Close(MYSQL* pMySQL = NULL);
    	bool Exit();
    
    protected:
    	MYSQL	*m_pMySQL;
    	MYSQL_RES	*m_pResult;
    	char*	m_pcDB;
    	char*	m_pcPW;
    	char*	m_pcUser;
    	char*	m_pcHost;
    };
    

    Das ist jetzt wirklich nur der COnnect Teil... wenn de nach den entsprechenden Funktionne mal bei Mysql.de -> Developer Zone suchst findest de das nötige aber auch 🙂



  • Najo.. zeigt mir 30 Fehler an dein code... ich lass es.. trozdem Danke



  • Könnt es sein das es eine MFC Anwendung ist ? zumindest schauts so aus
    sind hier im WinApi Forum.. weit entfernt von MFC



  • Aragonx schrieb:

    Könnt es sein das es eine MFC Anwendung ist ?

    Das ist überhaupt keine Anwendung, nur eine Klasse. Die musst du schon in deine Anwendung einbauen. Wenn dabei Fehler auftauchen, wäre es hilfreich, wenn du die Fehlermeldungen nennst. Die Anzahl der Fehler ist so ziemlich das nutzloseste, was du hier anführen kannst. Knapp über "geht nicht".

    zumindest schauts so aus

    Allzuviele MFC-Anwendungen kannst du noch nicht gesehen haben.

    sind hier im WinApi Forum.. weit entfernt von MFC

    Wir sind hier auch bei Mitdenken. Weit entfernt von Copy&Paste&HoffenDassDasLäuftOhneDassDasHirnAngestrengtWerdenMuss.



  • Aragonx
    Tja... du hast wohl echt garkeine Ahnung von C++... da wird weder WinAPI noch MFC verwendet... es ist nur eine pur C++ mit MySQL++ Klasse, die es nen bissel einfacher macht kurz zu connecten...

    Najo.. zeigt mir 30 Fehler an dein code... ich lass es.. trozdem Danke

    1. Die 30 Fehler zeigen.
    2. Wenn du jetzt schon aufgibst... nuja...
    3. Bitte -.-



  • Ich versteh euch nicht....
    Wenn man um Hilfe bittet dann hilft mir so ein Code gar nicht.. ist jetzt schon die 3 Seite..
    Ich habe doch gesagt das ich es noch nie gemacht habe und in diesem Bereich mit überhaupt net auskenn.. und ja ich hasse MFC und darum mach ich nur WinApi.. wo ist das Problem?????

    Kurze Texte kurze Links... sorry das hilft nix
    Wenns wirklich so einfach ist wie ihr sagt dann postet doch ein Kurzen GANZEN
    Quellcode... anscheinend gehts nicht... also das letzte ist wohl das man dann noch herzieht.. hast ja noch nie gesehen und so... jo darum schreib ich hier rein..
    Ich hab gesagt das ich es in WinApi brauch .. aber nicht nur ein Stück..
    Ich programmiere Grafik,Text,FTP,PHP,HTML,CGI, usw.habs auch schon mit Spiele versucht.. also Blöd bin ich auch net... 😡
    ABER ICH HABE NOCH NIE AUF EINE DATENBANK ZUGEGRIFFEN... BITTE EINEN GANZEN WINAPICODE DER FUNKTIONIERT ODER LASST ES... Ärgern kann ich mich selber auch
    Darum lass ich es... habe jetzt ein PHP Script geschrieben das meine Datenbank ausliest, und in eine Datei schreibt und per Ftp ladet mein Programm das selbst herunter und wertet diese Daten aus ... FERTIG.

    Immer das gleiche ... unser ganzes System ist so aufgebaut... mann sitzt oben wirft semmelwürfel herunter und wenn man nicht weiß was man damit machen soll.. anstatt genau zu erklären macht man sich lustig.. Bravo
    Wenn ihr nicht vorhabt es genau zu erklären lasst es.. 😡

    Ich möchte mich noch bei guenni81 bedanken der hat mir den Weg gezeigt um mich in das ganze mal einzuarbeiten...



  • Junge... jetzt werd nicht auch noch unverschämt.. nuja... bei mir funktioniert DIESER Code vollständig... sogar in einer std. C++ Konsolenanwendung... habs in nem Proj. drin...

    ich erklär das ganze jetzt nochmal... wenns dir dann immer noch net passt... dan VERPISS DICH! 😃

    Ich vermute zwar, das dein Problem einfach darin liegt, das ich bei dem Source net die Dateien die du includieren musst mit aufgelistet hab.. aber was solls.. also:

    also:

    // DAS HAB ICH GEDACHT WÄRE DIR KLAR -.-
    #include <mysql++.h>
    
    // Source
    MySQLClient::MySQLClient()
    {
        m_pcDB      = 0;      // Nen char* in dem der Name der Datenbank gespeichert wird...
        m_pcHost    = 0;      // Nen char* in dem der Name des Hosts gespeichert wird...
        m_pcPW      = 0;      // Nen char* in dem das PW hinterlegt wird...
        m_pcUser    = 0;      // Nen char* in dem der Benutzername hinterlegt wird...
        m_pMySQL    = NULL;   // Nen Pointer auf die MYSQL Schnittstelle...
    }
    
    MySQLClient::~MySQLClient()
    {
        Exit(); // Im Destruktor rufen wir um Probleme zu vermeinden mal die im folgenden definierte Exit(); Methode auf -.-
    }
    
    bool MySQLClient::Init(MYSQL* pMySQL) // Wenn vorhanden ist pMySQL eine Pointer auf eine MYSQL Schnittstelle... normal ist hier NULL.
    {
        if(pMySQL != NULL)
            m_pMySQL = mysql_init(pMySQL); // Wenn pMySQL existiert benutzen wir den auch ;)
        else
            m_pMySQL = mysql_init(NULL);   // An sonnsten nicht...
    
        if(!m_pMySQL)
            return false;                  // Es ist was beim initialisieren der Schnittstelle schiefgelaufen... wir geben false zurück...
    
        return true;
    }
    
    bool MySQLClient::Connect(const char* cDB, const char* cServer, const char* cPasswort, const char* cAccount)
    {
        if (!mysql_real_connect(m_pMySQL, cServer, cAccount, cPasswort, cDB, 0, NULL, 0)) // An der Stelle kann man auch mysql_connect(...) nehmen... s. http://dev.mysql.com/doc/refman/4.0/de/mysql-connect.html
            return false; // Das Verbinden ist fehlgeschlagen...
    
        strcpy(m_pcDB, cDB); // Wir füllen unsere char* um später evt. nochmal drauf zugreifen zu können... ohne das man jedes mal die Daten neu eingeben muss...
        strcpy(m_pcHost, cServer);
        strcpy(m_pcPW, cPasswort);
        strcpy(m_pcUser, cAccount);
    
        return true;
    }
    
    void MySQLClient::Close(MYSQL* pMySQL) // Auch hier kann man einfach NULL übergeben, oder eine MYSQL Schnittstelle...
    {
        if(pMySQL)
            mysql_close(pMySQL); // Wenn eine Übergeben wurde, diese schließen...
        else 
            mysql_close(m_pMySQL); // Sonnst die MySQL Schnittstelle der Klasse schließen...
    }
    
    bool MySQLClient::Exit()
    {
        if(m_pMySQL)
            m_pMySQL = NULL; // Wenn die Schnittstelle noch existiert... jetzt nicht mehr ;)
    
        if(m_pMySQL != NULL)
            return false;   // Wenn doch... dann ist was schief gelaufen...
    
        return true;
    }
    
    // Header
    class MySQLClient
    {
    public:
        MySQLClient();
        ~MySQLClient();
    
        bool Init(MYSQL* pMySQL = NULL);  // Initialisiert die MySQL-Schnittstelle
        bool Connect(const char* cDB, const char* cServer, const char* cPasswort, const char* cAccount); // Verbindet mit einer beliebigen MySQL DB...
        void Close(MYSQL* pMySQL = NULL); // Schließt die Verbindung mit der MySQL Schnittstelle wieder
        bool Exit();                      // Überprüft das die MySQL Schnittstelle auch wirklich weg ist ...
    
    protected:
        MYSQL    *m_pMySQL; // Pointer auf die MySQL Schnittstelle
        char*    m_pcDB;    // Char-Pointer auf den Datenbank-Namen...
        char*    m_pcPW;    // Char-Pointer auf das Passwort
        char*    m_pcUser;  // Char-Pointer auf den Benutzernamen
        char*    m_pcHost;  // Char-Pointer auf den Host/Server
    };
    

    Benutzen kannst de es in dem du folgendes machst...

    MySQLClient mySQL;
    
    mySQL.Init();
    if(mySQL.Connect("Datenbank", "127.0.0.1", "Passwort", "Benutzername")!= false)
        MessageBox(NULL, "Erfolgreich zur Datenbank verbunden!", "Hinweis", MB_OK | MB_ICONINFORMATION);
    mySQL.Close();
    mySQL.Exit();
    

    Und das wars... das funzt ohne Probleme... und vllt sollte man vllt einfach mal auf www.mysql.de gehen -.- http://dev.mysql.com/doc/refman/4.0/de/mysql-connect.html usw...



  • Sorry .. da lest man tagelang kiloweise irgendwelche Seiten die über hunderte Links zum nächsten führen... wenn man sowas noch nie gemacht hat.. und diejenigen die es schon gemacht haben sehen es als selbstverständlich an und es ist natürlich leicht wenns mans kennt.
    Danke fürs Posting 😃
    Und das mit dem verpissen überleg ich mir nochmal 😉


Anmelden zum Antworten