[C++] Problem mit MySQL

Buba235

Erfahrenes Mitglied
Hallo Leute!


Ich hab mir ein Programm in C++ (unter Linux) geschrieben und versuche damit auf eine MySQL-DB zu connecten. Scheint alles soweit zu klappen, nur das Programm macht nichts. Soll heißen: Es gibt keine Fehler beim Linken und Kompilieren, auch keine während der Laufzeit, aber in die DB ist nichts eingetragen. Wo könnte mein Fehler liegen? Hier mal mein Code:

main.cc
Code:
#include "CDatabase.h"
#include "CFillDB.h"

#include <mysql.h>
#include <iostream>
#include <errno.h>
#include <unistd.h>

using namespace std;

// Prototypes
void usage();

// global Variables 
extern int errno;


int main(int argc, char *argv[]) {
	// Variables
	MYSQL *conn;   
	char opt;
	const char *date;
	const char *date2;
	const char *user = "root";
	const char *databaseTable = "nagios_performance";
	
	
	// Printing help
	while ((opt = getopt(argc, argv, "d:")) != -1) {
		switch (opt) {
			case 'd':
				cout << opt << " -> " << optarg << "\n";
				date  = optarg;
				date2 = optarg;
				break;
    	}
	}
	
    // arguments 
	for (int i = 0; i < argc; i++) {
    	if (argc < 2) {
			// Beispiel
			usage();
		
			// Programmabbruch 
			exit(EXIT_FAILURE);
		}
	}
	
	// Create Objects
	CDatabase *myDB = new CDatabase();
	CFillDB *myFill = new CFillDB();
	
	cout << "Working ...\n";
	
	// Connect to DB
	conn = myDB->connectDB(user, databaseTable);
	
	// Fill all tables in the DB
	myFill->servicevalues_temp(conn, date);
	myFill->fillErgtables(conn);
	myFill->service_per_day(conn);
	myFill->service_per_day_percent(conn, date2);   
	myFill->delete_data(conn);
	
	// Close DB
	myDB->closeDB(conn);
	
	return 0;
}

/******************************************************************************/

void usage() {
	cout << "Usage: ./insert -d datum (z.B.: datum = 2007-12-02)\n";
}

Klasse:
Code:
#include <mysql.h>

class CDatabase {
	private:
		MYSQL *conn;
		const char *benutzer;
		const char *datenbankTabelle;
		
	public:
		CDatabase();
		~CDatabase();
		MYSQL *connectDB(const char *user, const char *databaseTable);
		void closeDB(MYSQL *connection);
};

cc Datei der Klasse:
Code:
#include "CDatabase.h"

#include <mysql.h>
#include <iostream>
#include <errno.h>

using namespace std;


// Constructor
CDatabase::CDatabase() {

}

// Destructor
CDatabase::~CDatabase() {

}

// Connection to Database
MYSQL* CDatabase::connectDB(const char *user, const char *databaseTable) {
	// Variables
	benutzer         = user;
	datenbankTabelle = databaseTable;
	
	
	// Verbindungsaufbau zum MySQL-Server mit Fehlerabfrage    
    conn = mysql_init(NULL);
    if (mysql_real_connect(conn,
                           "2.191.7.4",
                           benutzer,
                           "",
                           datenbankTabelle,
                           3306,
                           NULL,
                           0) == NULL) {
		fprintf(stderr, "!!EXCEPTION mysql_real_connect(): "
                        "%u (%s)\n", mysql_errno(conn), mysql_error(conn));
        exit(EXIT_FAILURE);
	}
	
	return conn;
}

// Close connection to DB
void CDatabase::closeDB(MYSQL *connection) {
	// Variables
	conn = connection;
	
	mysql_close(conn);
}


Für Hinweise bin ich dankbar!


Gruß
Buba


P.S: Ich kompiliere wie folgt:
Code:
g++ -I/usr/include/mysql -L/usr/lib/mysql -o insert main.cc CDatabase.cc CFillDB.cc -lmysqlclient -lz -lssl
 
Zuletzt bearbeitet:
Du willst also, dass wir dir hier was Vorkauen?

Grenz dein Problem doch lieber selber ein, das geht nicht nur viel schneller, man lernt auch Probleme öfter selber schneller zu lösen/erkennen - Jedenfalls auf demselben Gebiet.
 
Danke für die Antwort!


Ich wollte zwar sicher nicht dass mir hier jemand was vorkaut, aber wenn du das so siehst... Tja ich hatte einen Fehler und weiß nicht woran das liegt. Was ich wollte ist dass sich das jemand ansieht (wie in meinem ersten Beitrag auch steht) und dass mir vielleicht jemand sagen könnte wo der Fehler sitzt. Aber wenn du das so denkst, dann laß ich es lieber! Außerdem hab ich das Problem gelöst. Also nochmals vielen "Dank" für deine Hilfe!


Gruß
Buba
 
Danke für die Antwort!


Ich wollte zwar sicher nicht dass mir hier jemand was vorkaut, aber wenn du das so siehst... Tja ich hatte einen Fehler und weiß nicht woran das liegt. Was ich wollte ist dass sich das jemand ansieht (wie in meinem ersten Beitrag auch steht) und dass mir vielleicht jemand sagen könnte wo der Fehler sitzt. Aber wenn du das so denkst, dann laß ich es lieber! Außerdem hab ich das Problem gelöst. Also nochmals vielen "Dank" für deine Hilfe!


Gruß
Buba

Meine Antwort sollte nicht als "Angriff" rüberkommen, auch wenn sich vielleicht beim Lesen anders vorkommt.

Es hilft einfach ungemein seine Fehler selbst zu lösen, indem man seine Probleme selber löst.

Finde heraus bei welcher Funktion, oder anhäufung von Funktionen, es kapituliert, damit du das Problem eingrenzen kannst.
 
Zurück