Hallo an alle Experten
Ich versuche gerade anhand der Oracle-Doku (Pro*C/C++ Precompiler Getting Started for Windows) Pro*C und Visual C++ zu verbinden.
Leider bisher erfolglos. Kann mir jemand sagen was fuer ein Projekt ich da auswaehlen muss ? Bisher habe ich immer WIN32-Konsole genommen.
Wo gehoert die orasql9.lib hin ? Ins Projektverzeichnis ? Oder in eines der Unterverzeichnisse (header, source,…) ?
Was muss ich beim Custom Build Process bei build commands reinschreiben ? Laut Doku den selben „hardcoded“ Pfad wie fuer $ORACLE_HOME. Die DeveloperSuite (wo das Pro*C ja dabei ist) und meine Oracle 9.2. DB auf die ich spaeter mit Hilfe der .pc-Dateien ja zugreifen will sind aber (wie in der Developer-Doku vorgeschrieben) in unterschiedliche Verzeichnisse installiert.
Waere echt dankbar wenn mir jemand ein bisschen weiterhelfen koennte.
Laeuft das Pro*C eigentlich auch mit Visual Studio .NET 2003 ???
Fragen ueber Fragen…
Gruss Claudia
Ok, ein Stueckchen weiter bin ich inzwischen gekommen…
Ich habe Visual C++ jetzt soweit dass er die .pc in eine .c Datei umwandelt und die .c Datei in ein .obj
Aber was muss ich nun tun um vom .obj zu einer .exe. oder einer .ora zu kommen ???
Aber was muss ich nun tun um vom .obj zu einer .exe.
oder einer .ora zu kommen ???
Was das mit .ora zu tun hat weiss ich nicht genau, aber .obj ist ein Objectfile, das Ergebnis des Kompiliervorgangs. Vom .obj zum .exe führt das Linken. Je nachdem wie du deine Projekteinstellungen im VC++ hast sollte das eigentlich automatisch passieren, überprüf aber einfach mal die Einstellungen für den Linker.
Grüße, Robert
ok, die erste Huerde ist geschafft…
Danke !!!
Hab meinen Fehler gefunden lag tatsaechlich an einer (von mir) vergessenen Einstellung.
Und mit .ora hat das ganze gar nichts zu tun da hatte ich was falsch verstanden.
Ok, jetzt bin ich soweit dass mir der VC die .exe ausspuckt. Das Ding laeuft auch soweit. D.h. der Connect wird durchgefuehrt (war zwar nicht ganz ohne aber den TNS Fehler hab ich schon behoben), allerdings steigt er mir jetzt beim SELECT mit der Fehlermeldung -1012 aus.
Bin noch am googeln ob es irgendein Patentrezept gibt wie ich den Fehler beheben kann.
Hat hier vielleicht jemand eine Idee ???
allerdings steigt er mir jetzt beim
SELECT mit der Fehlermeldung -1012 aus.
Bin noch am googeln ob es irgendein Patentrezept gibt wie ich
den Fehler beheben kann.
Hat hier vielleicht jemand eine Idee ???
Ich kenne dieses Oracle C Pro leider nicht, aber der ORA-1012 heisst einfach, dass die Datenbankverbindung die du fürs SELECT verwenden möchtest noch nicht geöffnet wurde.
Also falls dieses Oracle C Pro in irgendeiner Form gängigen Datenbank-APIs ähnelt, dann hast du da wahrscheinlich eine Art Connection-Handle auf das du erst eine Art Open-Funktion ausführen musst.
Ein kurzes Googlen nach Beispielprogrammen hat ergeben, dass das zwar kein API sondern ein Precompiler ist, aber da gibts scheinbar auch eine Zeile zum Öffnen der Verbindung, schaut irgendwie so aus:
EXEC SQL CONNECT :username IDENTIFIED BY assword;
Wobei username und passwort vorher gesetzt werden müssen. Hast du so eine Zeile in deinem Programm?
Wirf eventuell mal einen Blick auf folgenden URL:
http://www-rohan.sdsu.edu/doc/oracle/server803/A5466…
Grüße, Robert
Ja, die Zeile hab ich drin stehen…
Mein Programm sieht folgendermassen aus:
#include
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR kennung[20];
VARCHAR kennwort[20];
VARCHAR host[20];
VARCHAR db_name[20];
VARCHAR m_name[20];
VARCHAR m_vorname[20];
int m_nr;
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA;
main() {
strcpy(kennung.arr, „SCOTT“);
kennung.len = strlen(kennung.arr);
strcpy(kennwort.arr, „TIGER“);
kennwort.len = strlen(kennwort.arr);
strcpy(host.arr, „marvin“);
host.len = strlen(host.arr);
strcpy(db_name.arr, „CLAUDIA“);
db_name.len = strlen(db_name.arr);
EXEC SQL CONNECT :kennung IDENTIFIED BY :kennwort AT :host USING :db_name;
if(sqlca.sqlcode
Langsam aber sicher bin ich wirklich ratlos…
Hallo Claudia,
Schau dir eventuell mal das Beispiel vom dem Link aus meinem letzten Posting an und versuch das bei dir zum Laufen zu bringen. Vielleicht hilft das beim Finden des Fehlers.
Grüße, Robert