Avatar billede bagnavnet Nybegynder
05. december 2004 - 18:32 Der er 33 kommentarer og
1 løsning

Adgang til Oracle via Java

Hej Eksperter

Er der én der kan hjælpe mig med at få oprettet en adgang til Oracle via Java. Jeg programmerer i eclipse.
I første omgang ønsker jeg bare at kunne oprette en tabel og indsætte nogle værdier i den.

Jeg har fundet følgende kode stump, men det lader ikke til at virke.
----------------------------------------
import java.sql.*;
public class DatabaseAdgang
{
  public static void main(String[] arg) throws Exception
  {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection forb = DriverManager.getConnection("jdbc:odbc:datakilde1");
    Statement stmt = forb.createStatement();

    stmt.executeUpdate("create table KUNDER (NAVN varchar(32), KREDIT float)" );

    stmt.executeUpdate("insert into KUNDER values('Jacob', -1799)");
    stmt.executeUpdate("insert into KUNDER values('Brian', 0)");

  }
}
--------------------------------
Hvordan og hvor definerer jeg datakildens navn: "Datakilde1"?

Og, hvad skal jeg ellers gøre før det virker?

På forhånd tak.
Avatar billede arne_v Ekspert
05. december 2004 - 18:38 #1
Connection URL ser forkert ud !
Avatar billede bagnavnet Nybegynder
05. december 2004 - 18:40 #2
ok, jeg har læst at jeg muligvis skal hente en driver for at få det til at virke? Ved du om jeg skal det? Og, hvad skal der ændres ved URL´en?
Avatar billede arne_v Ekspert
05. december 2004 - 18:40 #3
Prøv:

"jdbc:oracle:thin:@servernavn:port:instans"
Avatar billede arne_v Ekspert
05. december 2004 - 18:41 #4
Driveren kommer vel med Oracle.

Ellers må den kunne downloades fra OTN.
Avatar billede bagnavnet Nybegynder
05. december 2004 - 18:43 #5
Jeg får følgende fejl når jeg prøver at køre den:
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at DatabaseAdgang.main(DatabaseAdgang.java:19)
Exception in thread "main"
Avatar billede arne_v Ekspert
05. december 2004 - 18:51 #6
Det er fordi den mangler driveren.

Jeg prøver lige at finde et link.
Avatar billede arne_v Ekspert
05. december 2004 - 18:52 #7
Avatar billede bagnavnet Nybegynder
05. december 2004 - 19:26 #8
Efter at have kigget nærmere tror jeg faktisk at jeg har driveren på computeren.
Den ligger under D:Oracle\ora90\ODBC\deckan32.dll
Kan det være den? I så fald hvordan pejer jeg på den i denne linie?
Connection forb = DriverManager.getConnection("jdbc:odbc:deckan32");
Avatar billede arne_v Ekspert
05. december 2004 - 19:36 #9
Det er det ikke.

Der er flere forskellige måder at connecte til en Oracle database via JDBC.

1)  Oracle thin JDBC driver

2)  Oracle OCI JDBC driver

3)  JDBC ODBC bridge

Class.forName("oracle.jdbc.driver.OracleDriver")
Connection forb = DriverManager.getConnection("jdbc:oracle:thin:@servernavn:port:instans");

er #1 altså thin.

Jeg mener at man generelt anbefaler thin idag.
Avatar billede arne_v Ekspert
05. december 2004 - 19:37 #10
Og jeg vil absolut fraråde #3 JDBC ODBC !
Avatar billede bagnavnet Nybegynder
05. december 2004 - 19:49 #11
Hvordan skriver jeg dette?:
--------
Connection forb = DriverManager.getConnection(
  "jdbc:oracle:thin:@oracle.cv.ihk.dk:1521:student","brugernavn","adgangskode");
----------
Beskrivelse:
Første parameter er en URL til databasen. Den består af en protokol ("jdbc"), underprotokol ("oracle") og noget mere, der afhænger af underprotokollen. I dette tilfælde angiver det, at databasen ligger på maskinen oracle.cv.ihk.dk port 1521 og hedder student.
----
Hvordan finder jeg ud af hvilken URL min database ligger på? Hvilken protokol og underprotokol?
Hvad skal jeg lede efter og hvor??
Avatar billede bagnavnet Nybegynder
05. december 2004 - 19:51 #12
Undskyld jeg havde ikke fået opdateret din kommentar, prøver det lige af.
Avatar billede arne_v Ekspert
05. december 2004 - 19:52 #13
Den generelle syntax for JDBC URL'er må komme med databasen eller JDBC driveren.

De oplysninger der skal indsættes formodes man at kende.
Avatar billede bagnavnet Nybegynder
05. december 2004 - 19:58 #14
Ved du hvor den thin JDBC driver skal ligge henne?
Avatar billede arne_v Ekspert
05. december 2004 - 20:06 #15
Det link jeg gav formoder jeg indeholder både thin og OCI.

Når du har jar filen så skal den anbringes i din classpath.

command line:

java -classpath xxxx.jar Program

IDE:

angives et eller andet sted i projekt properties:

etc.
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:10 #16
Nu har jeg fået fat i driver og tilføjet den til classpath. Med følgende 2 kode-stykker forsøger jeg at skabe forbindelse til databasen. URL ER korrekt.
Er der nogen der kan se hvor den er gal, for jeg kan ikke???
............
import java.sql.*;
import java.util.*;
import oracle.jdbc.*;

public class Databaseforbindelse
{
  private static Connection conn;
  private Statement stmt;
  final static String connectString = "jdbc:oracle:thin@DON:1521:jacob";

  public Databaseforbindelse() throws Exception
  {
    DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
    conn = DriverManager.getConnection(connectString, "System", "Manager");
    stmt = conn.createStatement();
  }

og..................

import java.util.Vector;
import oracle.jdbc.*;
import java.sql.*;

public class BenytDatabaseforbindelse
{
  public static void main(String[] arg)
  {
    try {
      Databaseforbindelse dbf = new Databaseforbindelse();
.............................
Avatar billede arne_v Ekspert
06. december 2004 - 15:14 #17
Hvilken fejl får du ?
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:18 #18
Denne:

java.sql.SQLException: Ugyldig Oracle URL er angivet
Problem med database: java.sql.SQLException: Ugyldig Oracle URL er angivet
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:285)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:203)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Databaseforbindelse.<init>(Databaseforbindelse.java:14)
    at BenytDatabaseforbindelse.main(BenytDatabaseforbindelse.java:10)
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:20 #19
Jeg er lidt i tvivl om det kan have noget at gøre med at den ikke godkender denne import:
import oracle.jdbc.*;
Det burde den vel gøre?
Avatar billede arne_v Ekspert
06. december 2004 - 15:34 #20
Hvad mener du med "ikke godkender" ?
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:35 #21
den markerer det med gul understregning og spørger om jeg vil fjerne min import..
Avatar billede arne_v Ekspert
06. december 2004 - 15:36 #22
Nå. Det er bare fordi at du ikke bruger den. Det betyder ikke noget.
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:37 #23
ok, men jeg får stadig fejl...
Avatar billede arne_v Ekspert
06. december 2004 - 15:37 #24
Er DON et validt host navn ?

Har du prøvet med fuld host navn ?
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:38 #25
Jeg har kigget i tnsnames filen og der står:

JACOB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = don)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = Jacob)
    )
  )
Avatar billede arne_v Ekspert
06. december 2004 - 15:41 #26
Ja men det er jo Oracle NET - det er kun relevant ved brug af OCI driver.

Ved brug af thin driver skal du angive almindelig IP navn.
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:42 #27
kan jeg så bare angive den sådan:
"jdbc:oracle:oci@DON:1521:jacob";
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:43 #28
har lige forsøgt, giver stadig samme fejl.
Avatar billede bagnavnet Nybegynder
06. december 2004 - 15:44 #29
hvor finder jeg det ip-navn? Er det min maskines ip?
Avatar billede arne_v Ekspert
06. december 2004 - 15:44 #30
IP navn/nummer på maskinen som kører Oracle
Avatar billede arne_v Ekspert
06. december 2004 - 15:45 #31
OCI URL'er er helt anderledes
Avatar billede arne_v Ekspert
01. januar 2005 - 13:45 #32
kom du videre ?
Avatar billede arne_v Ekspert
01. januar 2005 - 13:46 #33
og et svar for det jeg måtte have bidraget med
Avatar billede qualjyn Nybegynder
13. juli 2005 - 09:20 #34
kan du ikke give arne hans point, så vi kan få lukket spørgsmålet?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester