C++ MySQL für Anfänger

fink-x

Mitglied
Hallo liebes Forum,

ich habe ein kleines Programm geschrieben welches Daten verarbeitet und dieses soll nach der verarbeitung diese Daten in eine MySQL Datenbank schreiben. Das ganze wird auf einem MacOS 10.6 ausgeführt. Alles funktioniert super, außer die Verbindung zur DB, da beiße ich mir im Moment die Zähne aus.
Ich lese seit zwei Tagen irgendwelche Dokus, suche alles Mögliche bei goolge oder in Foren, aber irgendwie stehe ich auf dem schlauch oder hab ein Brett vorm kopf. Mein Problem liegt hierbei ziemlich am Start. Also bei der installation der libs usw. Ich versteh es einfach nicht, wie man die Daten richtig einbindet oder wo man allgemein die Daten hinmachen muss. Außerdem gibts da den C++ Connector oder mysql++ was genau muss ich nehmen. Wie muss man dann die Daten kompilieren usw.

Tut mir leid das ich hier fragen muss und ich würde es auch nicht machen wenn es nicht wirklich wichtig wäre. Ich bitte euch wirkich mir keinen Link zur mysql Seite zu geben oder Tipps für andere Programmiersprachen, sondern vielleicht ne kleine erkärung zu geben, ich will keinen kompletten Code sondern einfach nur eine Hilfe zum weiterkommen, einfach was damit ich verstehe wie es funktioniert das ich eine Verbindung zur MySQL Datenbank mit C++ bekomme.

Zur Info, komme nicht wirklich aus der C/C++ Welt. Sondern mache viel mit Java bzw. php. Von daher sind die C/C++ Sachen ziemliches Neuland für mich.

Viele Grüße und Danke im vorraus
 

deepthroat

Erfahrenes Mitglied
Hi.
Also bei der installation der libs usw. Ich versteh es einfach nicht, wie man die Daten richtig einbindet oder wo man allgemein die Daten hinmachen muss.
Die Daten verwaltet doch die Datenbank. Was soll also die Frage?

Was hast du denn installiert?
Außerdem gibts da den C++ Connector oder mysql++ was genau muss ich nehmen.
Das kommt ganz darauf an welche Schnittstelle du verwenden willst. Du kannst die simple C Schnittstelle nehmen, oder eben einen der C++ Wrapper.
Wie muss man dann die Daten kompilieren usw.
Du meinst wie du MySQL installierst? Du installierst dir fink und installierst daraufhin das mysql-unified-dev Paket.

Gruß
 

fink-x

Mitglied
Hi.
Die Daten verwaltet doch die Datenbank. Was soll also die Frage?
Oh, da hab ich mich falsch ausgedrückt. Wenn ich mir die "Dateien" von der MySQL Seite runterlade, bespiel der Connector/C++ dann sind dort in dem Ordner oder Archiv weitere unterordner wie "lib" und "include" aber scheinbar reicht es nciht diese einfach in die "/usr/" Verzeichnisse zu kopieren sondern man muss dann diese irgendwie vorkompilieren oder makefiles erstellen und genau da hängt das Problem bei mir.
Was hast du denn installiert?
Die Datenbank läuft auf dem System, diese funktioniert auch und ich kann sie über die Konsole ansprechen.
Das kommt ganz darauf an welche Schnittstelle du verwenden willst. Du kannst die simple C Schnittstelle nehmen, oder eben einen der C++ Wrapper.
Am liebsten wäre mir der C++ Wrapper, ich geh davon aus das dies der "Connector/C++" ist

Du meinst wie du MySQL installierst? Du installierst dir fink und installierst daraufhin das mysql-unified-dev Paket.
Gruß
Das mit fink hab ich schon probiert, lässt sich aber irgendwie nicht auf einem 10.6.x installieren. Hab es mit der neuesten Version versucht.
 

fink-x

Mitglied
Und?! Was heißt das? Was hast du runtergeladen? Was hast du ausgeführt? Was hast du gemacht?

Gruß

Also, ich hab es noch mal anders versucht und hab mich mehr auf das Programm "fink" konzentriert, welches ich jetzt über ein kleinen Umweg installieren konnte.

Danach hab ich folgendes gemacht:
Ich hab mir das Packet mysql++-3.0.9.tar.gz herruntergeladen und enpackt (dieses hab ich vom Schreibtisch(Desktop) aus gemacht, hier meine eine Frage, muss ich das noch woanders hin kopieren?.

über die Konsole in den Ordner welchen ich entpackt habe:

PHP:
apple$ fink install mysql15-dev
...
...
apple$ ./configure --disable-dependency-tracking \
            CXXFLAGS='-arch ppc -arch i386'
....
configure: error: Unable to MySQL client library!

Tja...irgendwie pack ich das nicht, ich weiß nicht wirklich was ich falsch mache.

ich hab dann auch mal versucht das Package einzubinden, ich hab eine Beispieldatei aus dem Ordner benutzt:
PHP:
/* Kommentare entfernt */

#include "cmdline.h"
#include "printdata.h"

#include <mysql++.h>

#include <iostream>
#include <iomanip>

using namespace std;

int
main(int argc, char *argv[])
{
	// Get database access parameters from command line
	const char* db = 0, *server = 0, *user = 0, *pass = "";
	if (!parse_command_line(argc, argv, &db, &server, &user, &pass)) {
		return 1;
	}

	// Connect to the sample database.
	mysqlpp::Connection conn(false);
	if (conn.connect(db, server, user, pass)) {
		// Retrieve a subset of the sample stock table set up by resetdb
		// and display it.
		mysqlpp::Query query = conn.query("select item from stock");
		if (mysqlpp::StoreQueryResult res = query.store()) {
			cout << "We have:" << endl;
			mysqlpp::StoreQueryResult::const_iterator it;
			for (it = res.begin(); it != res.end(); ++it) {
				mysqlpp::Row row = *it;
				cout << '\t' << row[0] << endl;
			}
		}
		else {
			cerr << "Failed to get item list: " << query.error() << endl;
			return 1;
		}

		return 0;
	}
	else {
		cerr << "DB connection failed: " << conn.error() << endl;
		return 1;
	}
}

Aber er findet keine include Files. Ich weiß wirklich nicht weiter.
//Edit:
Er findet natürlich nur diese #include <mysql++.h> nicht, die anderen natürlich!

Vielleicht liegt es daran, das ich als Entwicklungsumgebung Eclipse nutze und meine Files von dort aus Kompiliere. Ich hab auch mal in die Ordner "/usr/include" sowie "/usr/lib" nachgesehen, aber nirgends ist "mysql++" zu finden. Nachdem ich einmal den befehl "fink" ausgeführt hab, geht es nicht mehr. Ich weiß nicht, stell ich mich nur doof an oder ist das wirklich so kompliziert, einfach in c++ eine mySql DB zu verbinden?

Vielen Dank
 
Zuletzt bearbeitet:

deepthroat

Erfahrenes Mitglied
Hi.

Fink installiert die Software unter /sw. D.h. wenn die Installation mit fink erfolgreich war, dann mußt du beim ./configure der mysql++ Quelldateien den Ort angeben wo sich die include Dateien befinden (siehe ./configure --help). Das gleiche gilt natürlich auch für das CDT Projekt.

Bevor du nicht die mysql++ Bibliothek kompiliert hast, brauchst du auch nicht versuchen ein Programm damit zu erstellen.

Gruß
 

fink-x

Mitglied
Hi.

Fink installiert die Software unter /sw. D.h. wenn die Installation mit fink erfolgreich war, dann mußt du beim ./configure der mysql++ Quelldateien den Ort angeben wo sich die include Dateien befinden (siehe ./configure --help). Das gleiche gilt natürlich auch für das CDT Projekt.

Bevor du nicht die mysql++ Bibliothek kompiliert hast, brauchst du auch nicht versuchen ein Programm damit zu erstellen.

Gruß

Erstnochmal vielen Dank für deine Hilfe, ich hab aber noch ein Problem bei der "./configue --with-mysql=sw2 --with-mysql-lib=<mysql-devel> with-mysql-inc=<?>" wenn ich das richtig verstandne hab muss ich das so machen nur brauch ich jetzt jetzt noch dieses mysql-devel...aber kein Plan...ich hab auch schon im Internet gesucht ob mir das nicht mal einer versuchen kann zu erklären nur schicken mir alle immer nur irgendwelche links aus denen ich auch nicht schlauer werde :-(
 

deepthroat

Erfahrenes Mitglied
Hi.

Irgendwie solltest du erstmal lernen dein Problem ordentlich zu beschreiben. Bei deinem Kauderwelsch versteht man kein Wort. Satzzeichen wären auch nicht schlecht.

Laut MySQL FAQ:
Unlike with past versions of MySQL++, the configure script finds either version of the library without any help from you.
mußt du nichts weiter machen wenn per fink mysql15-dev erfolgreich installiert werden konnte.

Wenn da irgendwas nicht funktioniert weil configure die MySQL Header nicht findet, dann mußt du in die config.log Datei schauen woran es hapert.

Gruß