000
02.08.2005, 11:24 Uhr
~aline
Gast
|
Hallo!
Ich möchte mich in C++ mit einer Oracle DB verbinden und bestimmte Sachen auslesen. Das Verbinden klappt schon, das hab ich folgendermaßen gemacht:
Code: |
int main() {
CDatabase db01;
db01.OpenEx("DSN=DB01;UID=user;PWD=passwort", CDatabase::openReadOnly | CDatabase::noOdbcDialog );
if(db01.IsOpen() != 0) cout << "Verbindung zu DB01 hergestellt!" << endl << endl; else cout << "Verbinden zu DB01 fehlgeschlagen!" << endl;
...
return 0; }
|
Als Header hab ich die <afxdb.h> verwendet. Jetzt möchte ich mit einem CRecordset Objekt Daten aus einer Tabelle dieser DB auslesen. Allerdings blick ich nicht so ganz durch, wie dieses CRecordset arbeitet. Habs erstmal damit versucht:
Code: |
CRecordset rdb01(&db01);
rdb01.Open(CRecordset::forwardOnly, sql, CRecordset::readOnly);
if(rdb01.IsOpen() != 0) cout << "Recordset geöffnet!" << endl << endl; else cout << "Recordset nicht geöffnet!" << endl;
|
In der Variable sql steht eine SELECT Anweisung (SELECT * FROM Tabelle) und ist vom Typ CString, da mit einem normalen String sonst eine Fehlermeldung kommt. Allerdings verstehe ich nicht wie dieses CString arbeitet, da ich wenn ich davon eine Variable ausgeben möchte sie als Zeiger bahndeln muss (warum eigentlich?) und dann auch nur das 1. Zeichen der Zeichenkette ausgegeben wird. Was genau unterscheidet denn nun String von CString?
Wie kann ich eigentlich den Inhalt eines bestimmten Felds auslesen. Das SQL dafür ist nicht das Problem, eher die Einbindung in C++. Habs mit GetFieldValue() versucht, aber da ist nix anständiges rausgekommen.
Außerdem stürzt das Programm neuerdings immer beim Öffnen des Recordsets ab und das hat es vorher nicht getan.
Bin also ziemlich ratlos...
Kann mir jemand helfen? |