MySQL Connector/C++ und VS MFC



  • Zunächst einmal ein freundliches Hallo!

    Mein Daten: OS = Win7 64bit, IDE = Visual Studio 2012 Ultimate

    Nach langem probieren habe ich es geschafft in einer win32-Konsolenanwendung die libs, includes und Dlls erfolgreich einzubinden, mich mit dem Server zu verbinden und auch Daten in eine Datenbank zu übertragen.
    Nach diesen, für mich, großen Erfolg wollte ich ein wenig mit MFC herum spielen und mir ein "Login" Programm schreiben. Das Programm sollte die Möglichkeiten zum Login und zur Registration haben. Nun habe ich eine MFC Anwendung auf Dialogfeldern basierend erstellt mit Buttons und bla.

    Das Problem ist, dass bei der MFC Anwendung immer eine Messagbox kommt, dass die Anwendung nicht korrekt gestartet werden kann mit den Fehlercode 1072365566 (0xc0150002). Nach einigen Testen konnte ich den Fehler eingrenzen und es liegt an diesen Stück:

    driver = get_driver_instance();
    

    an dieser stelle crashd das Programm 😞

    #include <stdlib.h>
    #include <iostream>
    #include <sstream>
    #include <stdexcept>
    /* uncomment for applications that use vectors */
    //#include <vector>
    
    #include "mysql_connection.h"
    
    #include <cppconn/driver.h>
    #include <cppconn/exception.h>
    #include <cppconn/resultset.h>
    #include <cppconn/statement.h>
    #include <cppconn/prepared_statement.h>
    
    #define HOST "tcp://localhost:3306"
    #define USER "root"
    #define PASS "test"
    #define DB "datenbank"
    
    using namespace std;
    using namespace sql::mysql;
    #pragma comment(lib,"mysqlcppconn.lib")
    #pragma comment(lib,"libmysql.lib")
    
    void CRegistrationDlg::OnBnClickedButtonRegistration()
    {
    	UpdateData(TRUE);
    	try
    	{		
    		sql::Driver *driver;
    		sql::Connection *con;
    		sql::Statement *stmt;
    
    		driver = get_driver_instance();
    		con = driver->connect(HOST, USER, PASS);
    
    		stmt = con->createStatement();
    		con->setSchema(DB);
    		stringstream sql;
    
    		sql.str("");
    		sql << "INSERT INTO user(Username, Password, Name, Surname) VALUES (";
    		sql << "'" << m_username << "'" << ", " << "'" << m_password << "'" << ", ";
    		sql << "'" << m_name << "'" << ", " << "'" << m_surname << "'";
    		sql << ")";
    		stmt->execute(sql.str());
    
    		delete stmt;
    		delete con;
    	}
    	catch(sql::SQLException &e)
    	{
    
    		/*
    		MySQL Connector/C++ throws three different exceptions:
    
    		- sql::MethodNotImplementedException (derived from sql::SQLException)
    		- sql::InvalidArgumentException (derived from sql::SQLException)
    		- sql::SQLException (derived from std::runtime_error)
    
    		cout << "# ERR: SQLException in " << __FILE__;
    		cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;
    		cout << "# ERR: " << e.what();
    		cout << " (MySQL error code: " << e.getErrorCode();
    		cout << ", SQLState: " << e.getSQLState() << " )" << endl;
    
    		*/
    	}
    
    }
    

    Wieso funktioniert driver = get_driver_instance(); also nicht in MFC aber in win32 Konsolenanwendung?

    Ich bin dankbar über jede Hilfe 😕
    mfg TheGit

    Edit: Also ich habe jetzt noch mal in 64 debug modus und release, sowie in 32 debug modus und release im debug (f5) ausgeführt. Im debugmodus ist oben besagtes Problem und im release zeigt er keine Fehlermeldung, aber er sendet leider keine Daten an den Server..


Log in to reply