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
Klasse:
cc Datei der Klasse:
Für Hinweise bin ich dankbar!
Gruß
Buba
P.S: Ich kompiliere wie folgt:
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: