004
22.05.2003, 15:52 Uhr
virtual
Sexiest Bit alive (Operator)
|
Was du machen willst nennt sich "Embedded SQL", also kurz ESQL. Die Prinzipielle Idde dabei ist, daß man einen Source schreibt, der zwar sehr nach C aus sieht, aber erstmal kein C ist. zB sehen bei dem Source die Deklarationen von usrname und password so aus:
C++: |
EXEC SQL BEGIN DECLARE SECTION; VARCHAR userid[128]; /* Note: service name may be added ! */ VARCHAR passwd[DBINT_PASSWD_LEN]; char *dbname; /* DB-Name */ EXEC SQL END DECLARE SECTION; [...] strcpy( (char *) passwd.arr, pwd ); passwd.len = strlen( (char *) passwd.arr ); strcpy( (char *) userid.arr, uid ); userid.len = strlen( (char *) userid.arr ); [...] EXEC SQL CONNECT :userid IDENTIFIED BY :passwd ;
|
Den ganzen EXEL SQL Kram kennt der C Compiler nicht. Deshalb liefert Dir oracle mit dem proc ein tool, welches das in gültigen C Code umsetzt. Also muß Du die Datei, wie sie oben steht, erst Du den proc jagen. Der macht eine .c Datei daraus, wo an Stelle von dem EXEC SQL anweisungen ganz wilde Dinge stehen, aber immerhin compilierbares C. (Du kannst unter "Custom Build Step" im Visual C den ProC ziemlich bequem in Dein Projekt direkt mit einbinden). Die so generierte Datei schickst Du dann dem Visual C.
Ich habe lange nicht mehr mit ESQL gearbeitet, weil ich mich direkt mit dem nativen Interface von Oracle unterhalte (dadurch, daß ich auf vielen platformen entwickel, hab ich keinen Bock überall den proc mit hinzuschleppen, vielleicht auch für dich eine Überlegung, wenn Du portierungen machen mußt).
Also: Datei -> proc -> eine .c Datei -> Visual C -> .obj Datei -> Linker -> .exe/.dll. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |