L
llf
Hallo, nach dem ich heute endlich C++ mit MySQL zum Laufen brachte, kam mir eine Idee. Da ich ein Spiel programmiere (in SDL), will ich dies zu einem Onlinegame umbauen. Dafür will ich die MySQL-Datenbank als Login-Server verwenden. Was bedeutet, der Nutzer gibt Seine Email-Adresse und sein Passwort ein und das Skript überprüft dann den Rest. Als erstes wollte ich mit der MySQL-Funktion beginnen. Damit aber alles Ordentlich bleibt will ich SDL und MySQL klar von einander trennen. Jetzt habe ich eine Anwendung geschrieben, zum Testen ob das mit einer zweiten .cpp Datei und einer Header überhaupt geht. Compilen lässt es sich auch aber ausführen nicht. Wenn ich versuche es auszuführen, dann kommt folgende Fehler Meldung: Speicherzugriffsfehler. Ich hab' mir ein Build-Skript geschrieben (Shell). Wenn ich das ausführe kommt Segmentation fault. Was kann ich machen?
Hier der Quelltext von allen Dateien:
mysql.cpp
mysql.h
main.cpp
compile.sh
Danke für alle Antworten.
PS: Bitte sagt jetzt nicht das es doch viel praktischer ist ein Makefile zu benutzen. Ich finde Makefiles zu umständlich und hab' oft schlechte Erfahrungen gesammelt mit ihnen.
Hier der Quelltext von allen Dateien:
mysql.cpp
Code:
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
THE_MYSQL::THE_MYSQL()
{
conn = mysql_init(NULL);
}
THE_MYSQL::~THE_MYSQL()
{
}
void THE_MYSQL::connect()
{
if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
}
void THE_MYSQL::disconnect()
{
mysql_free_result(res);
mysql_close(conn);
}
MYSQL_RES *THE_MYSQL::send_query(char *query)
{
if(mysql_query(conn, query)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
return mysql_use_result(conn);
}
mysql.h
Code:
#ifndef MYSQL_H
#define MYSQL_H
#include <mysql/mysql.h>
class THE_MYSQL
{
public:
char *server;
char *user;
char *password;
char *database;
THE_MYSQL();
~THE_MYSQL();
void connect();
void disconnect();
MYSQL_RES *send_query(char *query);
private:
MYSQL *conn;
MYSQL_RES *res;
};
#endif
main.cpp
Code:
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
int main() {
MYSQL_RES *resource;
MYSQL_ROW row;
THE_MYSQL *connection;
connection->server = "localhost";
connection->user = "root";
connection->password = "imkampe";
connection->database = "game";
connection->connect();
resource = connection->send_query("show tables");
connection->disconnect();
}
compile.sh
Code:
g++ -c main.cpp -o main.o
g++ -c mysql.cpp -o mysql.o
g++ -o output-file $(mysql_config --cflags) main.cpp mysql.cpp $(mysql_config --libs)
./output-file
Danke für alle Antworten.
PS: Bitte sagt jetzt nicht das es doch viel praktischer ist ein Makefile zu benutzen. Ich finde Makefiles zu umständlich und hab' oft schlechte Erfahrungen gesammelt mit ihnen.