Jump to content
Melde dich an, um diesem Inhalt zu folgen  

Auslesen eines Datumsfeld aus einer Oracle Datenbank (Occi)

Empfohlene Beiträge

Guten Tag zusammen,

ich bin relativ neu in der c++ Welt und stoße leider gerade auf ein Problem das ich mit meinem aktuellen Know-How nicht lösen kann.

Folgendes SQL-Statement holt einen Datumswert als Char convertiert

select to_char(datumsfeld, 'dd.mm.yyyy hh24:mi:ss') Datum from table

 

Folgender C++ Code soll dieses Statement absetzen und in einer Schleife das Datum ausgeben

namespace oc = oracle::occi;		

		oc::Environment* env = oc::Environment::createEnvironment();
		oc::Connection* conn = env->createConnection("User", "***", "SID"); 
		oc::Statement* stmt = conn->createStatement("select to_char(datumsfeld, 'dd.mm.yyyy hh24:mi:ss) Datum from table"); 

		 // execution
		oc::ResultSet* res = stmt->executeQuery(); 
		while (res->next())
		{
			std::cout <<  "   " << res->getString(1)<< std::endl;
        }

 

Folgende Fehlermeldung wird geschmissen:

Debug Assertion Failed!

Programm: ... }heal\debug_heap.cpp

Expression: _CrtIsValidHeapPointer(block)

Diese Meldung kann ich dann mit "Abbrechen", "Wiederholen" oder "Ignorieren" quittieren.

Weiter läuft das Programm natürlich dennoch nicht.

 

Was mich nun total verwundert, das Datum wird dennoch im richtigen Format in die Konsole geschrieben.

Siehe Anhang.

 

Über eine Antwort würde ich mich sehr freuen.

Vielen Dank im Voraus.

Mfg

Console.png

bearbeitet von Serear

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Mahlzeit,

habe das ganze nun unter MS Visual Studio C++ 2010 Express laufen lassen.

Fehlermeldung:

Debug Assertion Failed!
Programm:... exe
File:...stc\dbgdel.cpp

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

 

Wieder rum wird das Datum richtig in die Konsole geschrieben.

 

Mfg

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hey,

VS2010 Service Pack 1 habe ich gerade installiert.

Die passende Version OCCI sollte installiert sein. ( Visual C++10 (VS 2010)[Windows 32-bit])

Oracle Client Version ist 11.2 32Bit.

 

Benutzen tu ich die occi.lib unter VC10 ? Ist doch richtig oder ?

 

Mfg

bearbeitet von Serear

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 33 Minuten schrieb Serear:

Hey,

VS2010 Service Pack 1 habe ich gerade installiert.

Die passende Version OCCI sollte installiert sein. ( Visual C++10 (VS 2010)[Windows 32-bit])

Oracle Client Version ist 11.2 32Bit.

 

Benutzen tu ich die occi.lib unter VC10 ? Ist doch richtig oder ?

 

Mfg

 

Habe mir das Readme der VC10 nochmal durchgelesen

Zitat

4) Ensure that %ORACLE_HOME%\oci\lib\msvc\vc10 is first in the PATH when running the
application.

Nach dem ich das getan habe, bekomme ich nun folgende Fehlermeldung 

Zitat

Der Prozedureinsprungpunkt "OCIPHeapAllocUc" wurde in der DLL "OCI.dll" nicht gefunden.

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hab das Thema ein bisschen Ruhen lassen.

Habe heute die Erkenntnis gewonnen das die Fehlermeldung

Zitat

Der Prozedureinsprungpunkt "OCIPHeapAllocUc" wurde in der DLL "OCI.dll" nicht gefunden.

nur im Visual C++ 2010 Express beim debuggen kommt.

Starte ich die .exe im "Visual Studio 2010\Projects\ProjektName\Debug" Ordner läuft das ganze ohne Probleme durch.

Ideen ?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

Melde dich an, um diesem Inhalt zu folgen  

×