Radhad
Erfahrenes Mitglied
Hallo Zusammen,
ich versuche ein Programm zu schreiben, welches mittels ODBC auf eine MySQL Datenbank zugreifen kann. Meine write() - Funktion klappt wunderbar. Aber die read() - Funktion stürzt immer bei der Zeile "TSrd1.Open(CRecordset::dynaset, _T( sql ));". Weiß jemand, woran das liegt? Hier mal der komplette Quellcode:
Ich hoffe mir kann jemand weiterhelfen.
Gruß Radhad
ich versuche ein Programm zu schreiben, welches mittels ODBC auf eine MySQL Datenbank zugreifen kann. Meine write() - Funktion klappt wunderbar. Aber die read() - Funktion stürzt immer bei der Zeile "TSrd1.Open(CRecordset::dynaset, _T( sql ));". Weiß jemand, woran das liegt? Hier mal der komplette Quellcode:
Code:
#include <afxwin.h>
#include <afxdb.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
void read()
{
system("cls");
CString ODBC;
CString UserID;
CString Vorname;
CString Nachname;
CString Username;
CDatabase db;
ODBC = "DRIVER={MySQL ODBC 3.51 Driver};PORT=3306;SERVER=127.0.0.1;DATABASE=sample;USER=root;PWD=";
db.OpenEx(ODBC, CDatabase::noOdbcDialog); (MySQL), UID(root), PWD(test)
if(db.IsOpen() == 0)
{
cout << "Die Verbindung zur Datenbank konnte nicht hergestellt werden!" << endl;
}
else
{
cout << "Verbindung hergestellt!" << endl << endl;
CString sql = "SELECT * FROM user";
CRecordset TSrd1(&db);
TSrd1.Open(CRecordset::dynaset, _T( sql ));
do
{
TSrd1.GetFieldValue("userid", UserID);
TSrd1.GetFieldValue("username", Username);
TSrd1.GetFieldValue("firstname", Vorname);
TSrd1.GetFieldValue("lastname", Nachname);
cout << UserID + " " + Username + " " + Vorname + " " + Nachname + "\n";
}
while(!TSrd1.IsEOF());
TSrd1.Close( );
}
db.Close( );
}
void write()
{
system("cls");
char username[255], vorname[255], nachname[255];
CString Vorname;
CString Nachname;
CString Username;
CString ODBC;
cout << "Username: ";
cin >> username;
cout << "Vorname: ";
cin >> vorname;
cout << "Nachname: ";
cin >> nachname;
Username.Format("%s",username);
Vorname.Format("%s",vorname);
Nachname.Format("%s",nachname);
ODBC = "DRIVER={MySQL ODBC 3.51 Driver};PORT=3306;SERVER=127.0.0.1;DATABASE=sample;USER=root;PWD=";
CString SetReactionSQL = "INSERT INTO user (username, vorname, nachname) VALUES ('" + Username + "', '" + Vorname + "', '" + Nachname + "')";
CDatabase SetReactionConnection;
SetReactionConnection.OpenEx(ODBC, CDatabase::noOdbcDialog); // Connection-Daten: DSN(MySQL), UID(root), PWD(test)
SetReactionConnection.ExecuteSQL( SetReactionSQL );
SetReactionConnection.Close();
}
void main()
{
int eingabe;
do
{
cout << "[1] Daten lesen" << endl;
cout << "[2] Datensatz schreiben" << endl;
cout << "[0] Ende" << endl;
cout << "Auswahl: ";
cin >> eingabe;
switch(eingabe)
{
case 1:
read();
case 2:
write();
default:
system("cls");
}
}while(eingabe != 0);
}
Ich hoffe mir kann jemand weiterhelfen.
Gruß Radhad