# verbinden mit oracle-db



## norman (5. Okt 2005)

hallo zusammen,

leider hat mich die forensuche noch nciht ans ziel gebracht, daher trotzdem ein neuer beitrag.
zunächst der stand der dinge:

die TNSNAMES.ORA:

```
# TNSNAMES.ORA Network Configuration File: C:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

PLATIN92 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.20.225)(PORT = 1592))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ora92)
    )
  )
```
und mein zusammenkopierter quellcode:

```
import java.sql.*;

class dbAccess {
  public static void main (String args []) throws SQLException
  {
	  
	try {
		Class.forName ("oracle.jdbc.driver.OracleDriver");
    } 
	catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
	  
    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@ora92:1521:platin92", "nrudnik", "tasse");

    Statement stmt = con.createStatement();
    ResultSet rset = stmt.executeQuery("sql bla bla");
    while (rset.next())
    System.out.println (rset.getString(1));   // Print col 1
    stmt.close();
      
  }
}
```

der fehler ist jedenfalls (zunächst) "java.sql.SQLException: E/A-Exception: The Network Adapter could not establish the connection"
=> in zeile 14 also. vermutlich ist die url völlig falsch zusammengesetzt? irgendwann stand mal kein thin sondern oci8 .. was auch immer das bedeutet. mir reicht ja erstmal eine verbindung, das verstehen kommt nachher dann denke ich. (zweckoptimismus).

ach ja..eine ojdbc14.jar wird erfolgreich eingebunden.
PS: benutze eclipse 3.1.1

vielen dank )


----------



## Mag1c (5. Okt 2005)

Hi,

der Thin-Treiber benutzt nicht die tnsnames.ora. Alle benötigten Infos stehen im Connect-String. Versuche mal:


```
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@172.20.20.225:1592:platin92", "nrudnik", "tasse");
```

Gruß
Mag1c


----------



## norman (5. Okt 2005)

hm...sieht evtl etwas besser aus. jedenfalls ist der fehler ein anderer jetzt:
E/A-Exception: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153093120)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))

...?


----------



## thE_29 (5. Okt 2005)

Du hast einmal Port 1592 und einmal 1521!

Könnte es an dem liegen??

Dein 1. Fehler war, das der ora92 nicht auflösen konnte (dann muss man halt entweder die fixe IP eintragen oder wenns am System selber ist localhost!)


----------



## thE_29 (5. Okt 2005)

Probier mal bei tnsnames.ora den Port auf 1529 zu ändern!

Bei meinen Files ist immer der Port drinnen und nicht 1592 (vielleicht tippfehler??)


----------



## norman (5. Okt 2005)

wenn ich in der tnsnames.ora auf 1529 ändere, hat es keine auswirkungen.
wenn ich aber im quellcode änder, kommt nun der fehler:

The Network Adapter could not establish the connection

hm?


----------



## KISS (5. Okt 2005)

also 1. wenn du thin jdbc nutzt hast du mit den tns settings nichts zu tun.
2. laufen die listener?
3. kannst du mit einem anderen tool (e.g. jdev) zur db verbinden?


----------



## norman (5. Okt 2005)

hallo kiss,

1. okay
2. welche?
3. ja, mit dem oracle sqlplus


----------



## norman (5. Okt 2005)

achja..aktueller code ist vielleicht auch nciht schlecht

```
import java.sql.*;

class dbAccess {
  public static void main (String args []) throws SQLException
  {
	try {
		Class.forName ("oracle.jdbc.driver.OracleDriver");
    } 
	catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
	
	
	try {  
		Connection con = DriverManager.getConnection("jdbc:oracle:thin:@172.20.20.225:1592:platin92", "nrudnik", "tasse");
		
	    Statement stmt = con.createStatement();
	    ResultSet rset = stmt.executeQuery("sql bla bla");
	    while (rset.next())
	    System.out.println (rset.getString(1));   // Print col 1
	    stmt.close();
	}
	catch (SQLException e) {
		e.printStackTrace();
	} 
  }
}
```


----------



## Bleiglanz (5. Okt 2005)

ist die SID jetzt "ora92" oder "platin92"??


----------



## norman (5. Okt 2005)

also bei sqlplus melde ich mich mit namen und "tasse@platin92" an..erfolgreich..


----------



## Mag1c (5. Okt 2005)

Hi,

ja richtig. Wenn SQLPlus funktioniert, dann stimmt auch die tnsnames.ora und dann ist dir SID natürlich ora92. Also:


```
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@172.20.20.225:1592:ora92", "nrudnik", "tasse");
```

Gruß
Mag1c


----------



## Mag1c (5. Okt 2005)

norman hat gesagt.:
			
		

> also bei sqlplus melde ich mich mit namen und "tasse@platin92" an..erfolgreich..



Ist "tasse" jetzt Benutzername oder Passwort ? Bei getConnection(...) kommt erst der Benutzer und dann das Passowrt.

Gruß
Mag1c


----------



## norman (5. Okt 2005)

cool..die verbindung steht *strahl* .. danke.
nur:
	
	
	
	





```
try {  
		Connection con = DriverManager.getConnection("jdbc:oracle:thin:@172.20.20.225:1592:ora92", "nrudnik", "tasse");
		
	    Statement stmt = con.createStatement();
	    ResultSet rset = stmt.executeQuery("SQL SELECT table_name FROM user_tables;");
	    while (rset.next())
	    System.out.println (rset.getString(1));   // Print col 1
	    stmt.close();
	}
	catch (SQLException e) {
		e.printStackTrace();
	}
```
==> ORA-00900: Ungültige SQL-Anweisung
hä?


----------



## Mag1c (5. Okt 2005)

Das "SQL" in der Query ist zu viel:


```
ResultSet rset = stmt.executeQuery("SELECT table_name FROM user_tables;");
```

Bin mir grad nicht sicher, ob das Semikolon am Ende sein muß/darf. Falls es immer noch nicht geht, lass das mal weg.

Gruß
Mag1c


----------



## norman (5. Okt 2005)

*mist* .. hatte das eigentlich schon probiert..ohne dem sql. auch mal ohne ; .. aber ohne beides (und so muss es sein) leider noch nicht.

vielen dank )


----------

