Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C++ konekcija sa oracle bazom

[es] :: C/C++ programiranje :: C++ konekcija sa oracle bazom

Strane: 1 2

[ Pregleda: 5655 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon C++ konekcija sa oracle bazom23.11.2015. u 14:45 - pre 101 meseci
Potrebno mi je da se konektujem iz c++ na oracle bazu.

Skinuo sam Oracle c++ call interface za visual studio 2010.

Da li je potrebno ucitati ovaj OCCI, i posle toga pisati samo klasu za konekciju ili...

Ili je mozda bolje naci ODBC driver insatalirati ga i pozvati preko konekcionog stringa.

Kao npr. u Javi gde instaliram JDBC drajver pozovem klasu, upisem potrebne parametre u konekcioni string i to je to.

Ako ima neko iskustvo za konektovanje iz C++ na oracle neka pise.

Unapred hvala.
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom24.11.2015. u 11:04 - pre 101 meseci

Ja sam skinuo sa oraclovog sajta dve biblioteke. Smestio sam ih u odredjeni folder. U okviru visual studia c++ navedem putanju, medjutim on mi ne prepoznaje occi. Problem je sto ja nemam kod sebe instaliranu na lokalu oracle bazu, vec pristupam udaljenoj bazi. Samo sam skinuo potrebne biblioteke.

evo koda:

Code:


#include <iostream>
#include "stdafx.h"
#include <occi.h>---OVDE IMAM PROBLEM

using namespace std;
using namespace oracle::occi;
int _tmain(int argc, _TCHAR* argv[])
{

    oracle::occi::Environment* environment;
    oracle::occi::Connection *con;
    oracle::occi::Statement* stmt;
    oracle::occi::ResultSet* res;
  
    try{
  
    environment = oracle::occi::Environment::createEnvironment(oracle::occi::Environment::DEFAULT);
        
  
    con = environment->createConnection("d....","......", "192.168.xx.x:1521/xxx");

    stmt = con->createStatement("

    SELECT SUM(s.kolicina) kolicina
    FROM ttr_sadrzaj s, ttr_tsj_tok tt
    WHERE tt.sifskl = '1'
    and tt.datiz is null
    and s.tsj = tt.tsj
    and s.vlasnik_mp = 'DR'
    and s.ibrmat='23';

 ");
        res = stmt->executeQuery();
  
        while (res->next())

        std::cout << res->getInt(1) << "  " << res->getString(2) <<" "<< res->getString(3) << std::endl;
        stmt->closeResultSet(res);
        con->terminateStatement(stmt);
        environment->terminateConnection(con);
  
    }
    catch (oracle::occi::SQLException &e){

    

        std::cout << e.what();
    }
  
    return 0;
}

 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom24.11.2015. u 11:16 - pre 101 meseci
Greska:

\konekcijaoracle\konekcijaoracle\konekcijaoracle.cpp(5): fatal error C1083: Cannot open include file: 'occi.h': No such file or directory
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: C++ konekcija sa oracle bazom24.11.2015. u 11:53 - pre 101 meseci
Nemaš fajl occi.h
Ili ga imaš ali nije na pravom mestu.
Prikačeni fajlovi
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom26.11.2015. u 08:27 - pre 101 meseci
Hvala na pomoci.


Sada dobijam novu gresku :

Konek.obj : error LNK2019: unresolved external symbol "public: static class oracle::occi::Environment * __cdecl oracle::occi::Environment::createEnvironment(enum oracle::occi::Environment::Mode,void *,void * (__cdecl*)(void *,unsigned int),void * (__cdecl*)(void *,void *,unsigned int),void (__cdecl*)(void *,void *))" (?createEnvironment@Environment@occi@oracle@@SAPAV123@W4Mode@123@PAXP6APAX1I@ZP6APAX11I@ZP6AX11@Z@Z) referenced in function _wmain
1>C:\Users\Razvoj02\documents\visual studio 2010\Projects\Konek\Debug\Konek.exe : fatal error LNK1120: 1 unresolved external
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: C++ konekcija sa oracle bazom26.11.2015. u 08:33 - pre 101 meseci
Pa ovo ti sada kaže da nema pojma gde ti je biblioteka.

Ne znam šta si instalirao. Ajde lepo kreni ispočetka, instaliraj Instant Client i imaš sve što ti treba. Onda lepo proveri da li si za C++ lepo setovao include path i library path.

Sve ove tvoje greške nemaju veze sa occi nego sa setovanjem kompajlera.

http://www.oracle.com/technetw...stant-client/index-097480.html
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom26.11.2015. u 08:37 - pre 101 meseci
A kada dodam u linke -> Input oraocci.lib

Dobijam sledecu poruku o gresci

fatal error LNK1104: cannot open file 'oraocci.lib'
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom26.11.2015. u 09:07 - pre 101 meseci
Hvala na pomoci.

Ja sam radio na sledeci nacin: skinuo sam instantclient_11_2, postavio ga u E.

Otisao u projekat propertis->VC++ directories->include directories->E:\oracle\instantclient_11_2\sdk\include;$(IncludePath)


VC++ directories->Libary directories->E:\oracle\instantclient_11_2\sdk\lib\msvc\vc8;$(LibraryPath)

linkedr -> input-> additional dependencies -> oraocci.lib.


Kod se nalazi na pocetku.
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom26.11.2015. u 09:11 - pre 101 meseci
Na ovaj nacin je radjeno, ali to ne funkcionise. Sada cu pokusati sve ispocetka. Da li ima mozda veze sa verzijom oracle baze 11.202, 11.203,11.204.

Ja sam koristio 11.202 instant client?
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: C++ konekcija sa oracle bazom26.11.2015. u 09:48 - pre 101 meseci
Pa kakve veze ima verzija baze ili klijenta kada tebi kompajler ne zna gde je biblioteka?

Hajde, protumači ovu grešku:
fatal error LNK1104: cannot open file 'oraocci.lib'
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom26.11.2015. u 10:40 - pre 101 meseci
Ne prepoznaje 'oraocci.lib'.

Ovu gresku dobijam kada stavim u linker -> input-> additional dependencies -> oraocci.lib.

Prethodnu gresku dobijam kada izbrisem iz linkera oraocci.lib.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: C++ konekcija sa oracle bazom26.11.2015. u 17:00 - pre 101 meseci
Linker ne može da otvori fajl verovatno jer ne može da ga pronađe. Potrebno je reći linkeru gde može da pronađe fajl. U Solution Explorer prozoru selektuj odgovarajući projekat (to jest ne solution, nego projekat), pa iz menija (ili samo desni klik na projekat) > Project > Properties > Configuration Properties > Linker > General > Additional Library Directories i tu dodaj direktorijum u kome se nalazi oraocci.lib. Moraš da povedeš računa da se taj lib fajl slaže sa tvojom konfiguracijom. Ako je to .lib koji ide uz .dll fajl onda najverovatnije mora da se slaže samo arhitektura (x86 ili x64), ali ako je pravi standalone .lib onda moraju da se usklade još neke druge opcije u kompajleru i linkeru. Ti detalji obično pišu u nekom uputstvu koje se dobija tamo odakle si preuzeo .lib biblioteku.
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom27.11.2015. u 07:31 - pre 101 meseci
Ja sam vec pokusavao ovo, ali program puca (Has stopped working) cim krene sledeca linija koda..

Code:
environment = oracle::occi::Environment::createEnvironment(oracle::occi::Environment::DEFAULT);


Upitaju je Microsoft Visual Studio 2010, windows 64, oracle 11.2.0.2.


Ja sam skinuo instantclient-sdk windows 64,Oracle_Call_Interface.

U okviru foldera instaantclient sdk se u okviru foldera v9 nalazi se samo oraocci11.lib. A u okviru Oracle_Call_Interface occivc nalaze se lib i dll file.

Ako stavim i jednu i drugu putanju dobijam isti rezultat.

Ja sam stavljao sledece putanje:

a) VC++ Directories->Include Directories->E:\oracle\instantclient_11_2\sdk\include;$(IncludePath)

b)VC++ Directories-Libary Directories ->E:\oracle\instantclient_11_2\sdk\lib\msvc\vc8;$(LibraryPath)

c)Linker-> Input->oraocci11.lib

d)Linker->General-> Additional Library Directories->E:\oracle\occivc;%(AdditionalLibraryDirectories)-> (ovde se nalaze i lib i dll file).

Kada su mi ovakva podesavanja program puca.

Kada u linker inputu izbacim oraocci11.lib, dobijam gresku = error LNK2019: unresolved external symbol "public: static class oracle::occi::Environment *...




[Ovu poruku je menjao Dejan tf dana 27.11.2015. u 11:23 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: C++ konekcija sa oracle bazom27.11.2015. u 09:23 - pre 101 meseci
Umesto iskaza "program puca" potrebno nam je više informacija. Kako izgleda kad puca? Da li u Output prozoru piše nešto povodom tog pucanja?
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: C++ konekcija sa oracle bazom27.11.2015. u 10:01 - pre 101 meseci
Meni ništa nije jasno. Ne znam da li si uspeo da linkuješ oci biblioteku ili ne, da li umeš da postaviš okruženje za projekat ili ne.
Kažeš da koristiš VS 2010, a pokušavaš da upotrebiš stare biblioteke.

Da li ti je bin katalog od Oracle instant klijenta u PATH-u. Tamo se nalaze dll-ovi koji ti trebaju kada se aplikacija startuje. Da li si uopšte otvorio dokumentaciju i pogledao šta treba da podesiš?
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom27.11.2015. u 10:18 - pre 101 meseci
Ako mozes da mi pomognes pomozi, kao covek Mihailo Cvetanovic. A ne da mi se drze neka bezpotrebna predavanja.

Ako si pazljivo procitao sta sam napisao, videces sta sam uradio koja sam podesavanja izvrsio, moj deo koda se isto nalazi tu.

Koja stara biblioteka?



Prikačeni fajlovi
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: C++ konekcija sa oracle bazom27.11.2015. u 10:28 - pre 101 meseci
Da li ti je setovana putanja C:\Oracle\product\11.2.0\cl\oci\lib\msvc u projektu kao putanja do dodatnih biblioteka?
Da li ti je setovana putanja C:\Oracle\product\11.2.0\cl\bin u PATH-u ?
Da li ti je u Include ubačena putanja do hedera C:\Oracle\product\11.2.0\cl\oci\include ?

Dolaziš ovde sa tvrdnjom da ne radi oci, a ti ne uspevaš ni da kompajliraš program. Kako onda da te shvatim ozbiljno?

Evo moje PATH varijable (boldiran PATH to bin od klijenta):

C:\Java\jdk8_x64\bin;C:\ProgramData\Oracle\Java\javapath;C:\Oracle\product\11.2.0\cl\bin;C:\Oracle\Dev10g\jdk\jre\bin\classic;C:\Oracle\Dev10g\jdk\jre\bin;C:\Oracle\Dev10g\jdk\jre\bin\client;C:\Oracle\Dev10g\jlib;C:\Oracle\Dev10g\bin;C:\Oracle\Dev10g\jre\1.4.2\bin\client;C:\Oracle\Dev10g\jre\1.4.2\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Java\MinGW\bin

Evo ti linka do dokumentacije:
http://docs.oracle.com/database/121/LNCPP/toc.htm
http://docs.oracle.com/database/121/LNOCI/toc.htm
Citat:

Oracle Technology Network

The Instant Client libraries are also available on the Oracle Technology Network (OTN) Web site at:

http://www.oracle.com/technology/tech/oci/instantclient/Opens a new window

If these four libraries are accessible through the directory on the Operating System Library Path variable (LD_LIBRARY_PATH on Linux and UNIX, and PATH on Windows), then OCCI operates in the Instant Client mode. In this mode, there is no dependency on ORACLE_HOME and none of the other code and data files provided in ORACLE_HOME are needed by OCCI.

If you are installing Instant Client from the Oracle Technology Network,

Download and install the Instant Client libraries to an empty directory, such as instantclient_12_1.

Set the operating system shared library path environment variable (LD_LIBRARY_PATH on Linux and UNIX and PATH on Windows) to the directory used in step 1, instantclient_12_1.

Instant Client SDK

Instant Client can also be downloaded as an SDK package. The SDK contains all necessary header files and a makefile for developing OCCI applications in an Instant Client environment. Once developed, these applications can be deployed in any client environment. The SDK has these additional features:

It contains C++ demonstration programs.

It includes libraries required to link applications on Windows, and a Make.bat file is provided to build demos.

The Makefile demo.mk is provided to build the demos for Linux and UNIX. The instantclient_12_1 directory must be on the LD_LIBRARY_PATH before linking the application. These programs require symbolic links for the Client Code Library and the OCCI library, libclntsh.so.12.1 and libocci.so.12.1 respectively, in the instantclient_12_1 directory. The demo Makefile, demo.mk, generates these before the link step. These symbolic links can also be created in a shell script:

cd instantclient_12_1
ln -s libclntsh.so.11.1 libclntsh.so
ln -s libocci.so.11.1 libocci.so

The SDK also contains the Object Type Translator (OTT) utility and its classes to generate the application header files.

Complete Client Installation

If you performed a complete client installation by choosing the Admin option,

On Linux or UNIX platforms, the libociei.so library can be copied from the $ORACLE_HOME/instantclient directory. All the other libraries can be copied from the $ORACLE_HOME/lib directory in a full Oracle installation.

On Windows, the oraociei11.dll library can be copied from the ORACLE_HOME\instantclient directory. All other Windows libraries can be copied from the ORACLE_HOME\bin directory.



[Ovu poruku je menjao djoka_l dana 27.11.2015. u 11:50 GMT+1]
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: C++ konekcija sa oracle bazom27.11.2015. u 10:49 - pre 101 meseci
Ovako u pocetku kada sam poceo da radim na ovom problemu, kada sam stavio potrebna podesavanja, moja tvrdnja je bila da ne radi occi.h i to je tacna tvrdnja, jer sam

includovao occi.h, ali u okviru tog foldera koji sam bio skinuo(instant client basic, oracle call interface) se nisu nalazili potrebni header fajlovi. Kada sam resio taj

problem, kada sam sa sajta skinuo (instant client sdk), onda nalazim na sledece probleme, koje sam redom ovde iznosio.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
188.124.211.*



+62 Profil

icon Re: C++ konekcija sa oracle bazom27.11.2015. u 11:01 - pre 101 meseci
Citat:
djoka_l:
Da li si uopšte otvorio dokumentaciju i pogledao šta treba da podesiš?


Elem..?

Pozz
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: C++ konekcija sa oracle bazom27.11.2015. u 11:13 - pre 101 meseci
Citat:
Using OCCI with Microsoft Visual C++

The Oracle Database 12c Release 1 (12.1) includes OCCI libraries for developing applications with Microsoft Visual C++ version 9.0 (.NET 2008) and Microsoft Visual C++ version 10.0 (Visual Studio 2010). Microsoft Visual C++ version 8.0 is no longer supported.

Microsoft Visual C++ version 10.0 libraries are installed in the following default locations:

ORACLE_BASE\ORACLE_HOME\bin\oraocci12.dll
ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\oraocci12.lib

Copies of these two files are also installed under the directory:

ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\vc10

The Microsoft Visual C++ 9.0-specific version of the libraries is installed under:

ORACLE_BASE\ORACLE_HOME\oci\lib\msvc\vc9

Applications should link with the appropriate OCCI library. You must ensure that the corresponding DLL is located in the Windows system PATH.

Applications that link to MSVCRTD.DLL, a debug version of Microsoft C-Runtime, /MDd compiler flag, should link with these specific OCCI libraries: oraocci12d.lib and oraocci12d.dll.

All Instant Client packages contain the versions of the OCCI DLLs that are compatible with Microsoft Visual C++ version 9.0 and 10.0.


Applications should link with the appropriate OCCI library. You must ensure that the corresponding DLL is located in the Windows system PATH.

[Ovu poruku je menjao djoka_l dana 27.11.2015. u 12:25 GMT+1]
 
Odgovor na temu

[es] :: C/C++ programiranje :: C++ konekcija sa oracle bazom

Strane: 1 2

[ Pregleda: 5655 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.