Radhad
Erfahrenes Mitglied
Hallo zusammen,
ich versuche mittels C/C++ und CDatabase sowie CRecordset MySQL-Tabellen auszulesen. Allerdings weiß ich nicht, wie ich mein varValue vom Typ CDBVariant prüfen kann, welchen Datentyp sie enthaält. Kann mir da jemand bei weiterhelfen?
Hier mal das Programm:
Gruß Radhad
Nachtrag:
Integer lässt sich mit varValue.m_iVal und ist dwType 4 - varchar wäre dwType 8, aber ich kann es nicht mit varValue.m_pstring auslesen ^^
ich versuche mittels C/C++ und CDatabase sowie CRecordset MySQL-Tabellen auszulesen. Allerdings weiß ich nicht, wie ich mein varValue vom Typ CDBVariant prüfen kann, welchen Datentyp sie enthaält. Kann mir da jemand bei weiterhelfen?
Hier mal das Programm:
Code:
#include <afxwin.h>
#include <afxdb.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
void read()
{
system("cls");
/***** Variablen Deklarieren *****/
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=";
/********************************************** Verbindungsaufbau **********************************************/
db.OpenEx(ODBC, CDatabase::noOdbcDialog); // Connection-Daten: DSN(MySQL), UID(root), PWD(test)
if(db.IsOpen() == 0)
{
cout << "Die Verbindung zur Datenbank konnte nicht hergestellt werden!" << endl; // Ausgabe: Verbindung nicht hergestellt
}
else
{
cout << "Verbindung hergestellt!" << endl << endl;
/********************************************** Verbindungsaufbau **********************************************/
CRecordset rs(&db);
rs.Open(rs.forwardOnly, _T( "SELECT * FROM user" ));
CDBVariant varValue;
int n = rs.GetODBCFieldCount();
int i = 0;
cout << "Rows: " << n << endl;
while( !rs.IsEOF() )
{
for(i = 0; i < n; i++)
{
rs.GetFieldValue(i, varValue);
cout << varValue.m_iVal << endl;
}
cout << "Columns: " << i << endl;
rs.MoveNext();
}
rs.Close();
}
db.Close();
getch();
fflush(stdin);
}
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 InsertString = "INSERT INTO user (username, vorname, nachname) VALUES ('" + Username + "', '" + Vorname + "', '" + Nachname + "')";
CDatabase db;
db.OpenEx(ODBC, CDatabase::noOdbcDialog); // Connection-Daten: DSN(MySQL), UID(root), PWD(test)
db.ExecuteSQL( InsertString );
db.Close();
}
void main()
{
int eingabe;
do
{
system("cls");
cout << "[1] Daten lesen" << endl;
cout << "[2] Datensatz schreiben" << endl;
cout << "[0] Ende" << endl;
cout << "Auswahl: ";
cin >> eingabe;
fflush(stdin);
switch(eingabe)
{
case 1:
read();
break;
case 2:
write();
break;
default:
system("cls");
}
}while(eingabe != 0);
}
Nachtrag:
Integer lässt sich mit varValue.m_iVal und ist dwType 4 - varchar wäre dwType 8, aber ich kann es nicht mit varValue.m_pstring auslesen ^^
Zuletzt bearbeitet: