PDA

View Full Version : Welche #include für SQL und C++



Seiten : [1] 2

Matthias182
20-06-08, 10:27
Hallo Leute,

ich versuche gerade meine C++ Kenntnisse in Verbindung mit embedded SQL auf der iseries zu nutzen.

Leider scheitere ich schon beim wandeln des Programms.

Als Fehler bekomme ich immer, dass diese includes nicht gefunden wurden:

sqlenv.h
sqlutil.h
utilemb.h

Diese habe ich in der IBM Datenbank gefunden. Leider scheinen sie aber auf unserer iseries nicht zu existieren.

Gibt es andere, die ich nutzen kann?

Als Objekttype habe ich sowohl SQLC als auch CPP probiert.


Gruß
Matthias

BenderD
20-06-08, 10:38
Hallo,

da gibt es eine Lizenzoption (System openess includes) die installiert eine LIB QSYSINC und da sind die in der Datei H als Member drin. Kann man sich aber auch selber zusammenbasteln (wenn man denn weiß wie) oder anderweitig besorgen

D*B


Hallo Leute,

ich versuche gerade meine C++ Kenntnisse in Verbindung mit embedded SQL auf der iseries zu nutzen.

Leider scheitere ich schon beim wandeln des Programms.

Als Fehler bekomme ich immer, dass diese includes nicht gefunden wurden:

sqlenv.h
sqlutil.h
utilemb.h

Diese habe ich in der IBM Datenbank gefunden. Leider scheinen sie aber auf unserer iseries nicht zu existieren.

Gibt es andere, die ich nutzen kann?

Als Objekttype habe ich sowohl SQLC als auch CPP probiert.


Gruß
Matthias

Matthias182
20-06-08, 10:53
Hallo,

das habe ich ganz vergessen, natürlich ist das installiert und die Lib QSYSINC ist auch vorhanden, ebenso wie der Member H. Aber genau diese sind dort nicht drin. Dafür folgende:

SQLCLI
SQLPROC
SQLSTATE
SQLSYSTM
SQLUDF


Gruß
Matthias

BenderD
20-06-08, 12:21
ich muss da nochmal nachhaken, hast du die includes in deiner Source codiert?
ich finde weder im Handbuch embedded SQL hierzu was, noch werden die bei SQL Procedures/Functions in die Quellen generiert, noch brauche ich die bei C Programmen (CPP kann ich momnetan wg. fehlendem Pase nicht verifizieren)

D*B


Hallo,

das habe ich ganz vergessen, natürlich ist das installiert und die Lib QSYSINC ist auch vorhanden, ebenso wie der Member H. Aber genau diese sind dort nicht drin. Dafür folgende:

SQLCLI
SQLPROC
SQLSTATE
SQLSYSTM
SQLUDF


Gruß
Matthias

Matthias182
20-06-08, 12:54
Hallo,

ja ich habe die kodiert.

Da ich was SQL und C++ auf der Iseries angeht wirklich am Anfang stehe, habe ich mich mal bei IBM umgesehen und diese Beispiele gefunden.

How to modify table data (http://publib.boulder.ibm.com/infocenter/db2luw/v8/topic/com.ibm.db2.udb.doc/ad/samples/c/s-tut_mod-sqc.htm)

Vielleicht hilft dir das.

Die andere Frage wäre sonst, was brauche ich für SQL in C++?


Danke
Matthias

BenderD
20-06-08, 13:07
ich würde da eher hier aufsetzen:
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/rzajp/rzajp.pdf
und bei den C++ Handbüchern der AS/400
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp

D*B


Hallo,

ja ich habe die kodiert.

Da ich was SQL und C++ auf der Iseries angeht wirklich am Anfang stehe, habe ich mich mal bei IBM umgesehen und diese Beispiele gefunden.

How to modify table data (http://publib.boulder.ibm.com/infocenter/db2luw/v8/topic/com.ibm.db2.udb.doc/ad/samples/c/s-tut_mod-sqc.htm)

Vielleicht hilft dir das.

Die andere Frage wäre sonst, was brauche ich für SQL in C++?


Danke
Matthias

Matthias182
27-06-08, 09:10
Hallo Leute,

ich habe mich nun mal durch diese Dokumente gearbeitet und mittlerweile auch ein lauffähiges SQLC Objekt erzeugt.
Leider habe ich dabei noch Probleme mit dem IO-Management für C++. Dazu ist normal das Einbinden von IOSTREAM nötig.

Wenn ich den Member Type in der Source file auf CPP (für C++) setze, dann findet er diesen Member. Allerdings kann ich dann das Objekt wegen der SQL Statements nicht wandeln.

Wenn ich es auf SQLC setze, funktioniert alles. Wenn ich allerdings

#include iostream<iostream><iostream>

nutze, bekomme ich beim wandeln den Fehler

QTEMP/QSQLTEMP(PULVAL01CP), 70.10: CZM0296(30) #include file <iostream> not found.

Kann mir hier vielleicht noch mal jemand einen Tipp geben. So langsam verzweifle ich daran.


Gruß
Matthias</iostream></iostream></iostream>

Matthias182
27-06-08, 09:25
Ich habe noch etwas anderes probiert:

include "iostream.h"

Im file QSYSINC/H gibt es den Member iostream, aber beim wandeln bekomme ich dann eine ganze Reihe von Fehlermeldungen. HIer mal ein Auszug:

QSYSINC/H(IOSTREAM), 79.53: CZM0045(30) Undeclared identifier failbit.
QSYSINC/H(IOSTREAM), 79.64: CZM0045(30) Undeclared identifier badbit.
QSYSINC/H(IOSTREAM), 80.33: CZM0045(30) Undeclared identifier hardfail.
QSYSINC/H(IOSTREAM), 80.46: CZM0277(30) Syntax error: possible missing ';'
or ','?
QSYSINC/H(IOSTREAM), 83.33: CZM0045(30) Undeclared identifier in.
QSYSINC/H(IOSTREAM), 83.39: CZM0045(30) Undeclared identifier out.
QSYSINC/H(IOSTREAM), 83.46: CZM0045(30) Undeclared identifier ate.
QSYSINC/H(IOSTREAM), 83.53: CZM0045(30) Undeclared identifier app.
QSYSINC/H(IOSTREAM), 83.62: CZM0045(30) Undeclared identifier trunc.
QSYSINC/H(IOSTREAM), 84.33: CZM0045(30) Undeclared identifier nocreate.
QSYSINC/H(IOSTREAM), 84.47: CZM0045(30) Undeclared identifier noreplace.
QSYSINC/H(IOSTREAM), 85.33: CZM0045(30) Undeclared identifier bin.
QSYSINC/H(IOSTREAM), 85.43: CZM0045(30) Undeclared identifier binary.

Fuerchau
27-06-08, 10:49
Beim Include gibts eine Syntax zu beachten:



#include < [sys/]/xxx.h ><H xxx.h> // aus QSYSINC
#include "xxx.h" // aus eigenem verzeichnis


Die Art einer Quelle der QSYSINC solltest du NICHT ändern.

Fuerchau
27-06-08, 10:59
Die Quellenart müsste SQLCPP sein.
Der Erstellbefehl CRTSQLCPPI erstellt dann nur ein Modul, dass anschließend noch mit CRTPGM in ein Programm gebunden werden muss.