Imam instaliranu Oracle Database 10g Express Edition bazu na koju pokušavam da se konektujem iz java aplikacije koju pravim. Do sada što se tiče baza sam samo radio sa MySql i koliko sam do sad skontao, oracle je puno komplikovanija priča. Code koji je problem je sljedeći: Code: Connection connection = null; try { Connection con = null; Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:8080:xe", "system", "123456"); System.out.println("konekcija uspješna."); con.setAutoCommit(false); Statement stmt = con.createStatement(); stmt.executeQuery("CREATE TABLE sales AS SELECT id, SDO_GEOM.SDO_BUFFER(b.location, 0.25, 0.5, 'arc_tolerance=0.005 unit=mile') geom FROM branches b"); stmt.close(); System.out.println("Ok."); con.close(); } catch (Exception e) { e.printStackTrace(); } greška je: java.sql.SQLException: Io exception: Got minus one from a read call at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:273) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:327) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:360) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:150) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at oracle.mainOracle.main(mainOracle.java:15) Provjerio sam sid = xe. Listener sluša port 8080. Bazi mogu da pristupim preko oracle verzije phpMyAdmin-a. Probao sam da se konektujem i iz php-a, ali tamo imam problem što uspijem da se konektujem ali kada pošaljem upit, kaže mi da tabela ne postoji (bilo koju vrstu upita da pošaljem, a tabela postoji 100%). Tražio sam pomoć na više mjesta, svi kažu da uradim što sam već uradio... pa ako ko zna ovdje bio bih zahvalan. edit: AKo šta pomaže, kada promjenim ip adresu npr. na 127.0.0.2 dobijem sljedeću grešku: Code: java.sql.SQLException: Io exception: The Network Adapter could not establish the connection at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:273) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:327) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:360) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:150) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at oracle.mainOracle.main(mainOracle.java:13) Što po meni znači da sa ispravnom adresom ipak uspostavi neki kontakt sa bazom...
-mislim da ti nije nasao driver. Napisi ovo: try { Class.forName ("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } umjesto : Class.forName("oracle.jdbc.driver.OracleDriver");
Hvala vam na odgovoru. @BoLa Uradio sam kako si mi rekao, i dobio istu grešku: Code: java.sql.SQLException: Io exception: Got minus one from a read call at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:273) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:327) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:360) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:150) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at oracle.mainOracle.main(mainOracle.java:17) @syss probavao sam ranije sa portom 1521, tada dobijem sljedeću grešku: Code: java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1 ORA-12705: Cannot access NLS data files or invalid environment specified at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:315) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:276) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271) at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:646) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:307) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:360) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:150) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at oracle.mainOracle.main(mainOracle.java:17) Provjerio sam i da li slušaju port: Code: LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-JUN-2010 16:56 :25 Copyright (c) 1991, 2005, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ ction Start Date 14-JUN-2010 16:17:46 Uptime 0 days 0 hr. 38 min. 38 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Default Service XE Listener Parameter File C:\oraclexe\app\oracle\product\10.2.0\server\network\a dmin\listener.ora Listener Log File C:\oraclexe\app\oracle\product\10.2.0\server\network\l og\listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=phenom8750)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "CLRExtProc" has 1 instance(s). Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "XEXDB" has 1 instance(s). Instance "xe", status READY, has 1 handler(s) for this service... Service "XE_XPT" has 1 instance(s). Instance "xe", status READY, has 1 handler(s) for this service... Service "xe" has 1 instance(s). Instance "xe", status READY, has 1 handler(s) for this service... The command completed successfully Tabelu sam importovao iz .DMP file-a, koristeći system korisnika, pomoću imp komande u cmd-u. Stvarno nemam pojma šta bi moglo da bude...
Mislim da ti nije dobro instaliran driver za oracle tje ne moze da ga nadje. Probaj ubaciti driver u classpath(classes12.zip ? ).
@syss prmijenio sam port, promijenio u registry-ju vrijednosti NLS_LANG varijable. Samo što je kod mene bilo na dva mjesta da se promjeni. Pokušam ponovo, ista greška. Pobrišem skroz iz registry-ja te varijable-opet ista greška. Pogledam u init.ora, u njemu se nigdje ne spominje. Pošaljem upit SELECT * FROM NLS_SESSION_PARAMETERS; i dobijem Code: PARAMETER VALUE NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE Koliko sam skontao imaju 3 nivoa ovih NLS-ova. Prvi je na nivou sistema, drugi na nivou instance a treći na nivou sesije. Probao sam u cmd-u: set NLS_LANG=CROATIAN_CROATIA.EE8MSWIN1250, nema promjene. @BoLa Dodao sam klasu pravilno, evo za svaki slučaj sam napravio funkciju za kontrolu: Code: public static boolean imaLiKlase (String imeKlase){ try {Class.forName (imeKlase);return true;} catch (ClassNotFoundException exception) {return false;} } vrati true ako upišem oracle.jdbc.driver.OracleDriver, false ako namjerno pogriješim. Hvala vam ljudi na trudu
Ne znam fakat, ja radim sa PostgreSql+JDeveloper nikad problema nisam imao sa necim ovakvim. Samo dodas u libraries class path do .jara drivera napravim novu konekciju, i pichi. Koji IDE koristis?
Riješen problem Koristim eclipse, mada planiram da ovo uradim u netBeans-u, eclipse više koristim ovako za istesirat nešto. Kontao sam ako već ne mogu da promjenim te teritorijalno-jezičke postavke baze, da probam da svoj program prilagodim njima. U code sam samo dodao Code: import java.util.Locale; i Code: Locale.setDefault(Locale.ENGLISH); i konektovao sam se bez problema . Sad me jedino interesuje podrška za naše znakove, pošto je sve prilagođeno engleskom. Koliko sam se napatio oko ovoga, znam da je traljavo riješenje (bolje bi bilo da sam promjenio NLS baze), ali mi je drago što sam konačno uspjeo da uspostavim konekciju. Hvala ljudi puno na pomoći