Toon posts:

[Java] JDBC->DB2 probleempje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mensen, ik heb een probleempje met connecten naar een DB2 database via JDBC.

Om te connecten gebruik ik de url
code:
1
jdbc:db2:database?username=blaat&password=blaat

Maar als ik dan de connectie wil maken krijg ik van DB2 de errormessage "DATABASE?USERNAME=B" is not a valid database name :?

Ja, dat lijkt me logisch, 'database' is de juiste naam die hij moet hebben.

Ik heb al behoorlijk wat afgezocht op Internet, maar er is niet zo heel veel info (behalve IBM site, maar die vind ik nou niet echt prettig doorzoekbaar) over DB2 (commercieel pakket he?).

Dus misschien hier iemand die het weet? Moet ik een andere url gebruiken ofzo?

Help...

Verwijderd

'database' lijkt me geen goede naam om aan je dbase te geven, want dat vind veel software niet leuk (is ambivalent)

Verwijderd

Topicstarter
Zo heet hij ook niet, het is maar een voorbeeld.

Neem jij dan maar als url
code:
1
jdbc:db2:pietje?username=blaat&password=blaat

:+

  • JapJap
  • Registratie: Maart 2001
  • Laatst online: 07-01 11:02
Volgens mij zou het wel moeten werken, maar probeer 't anders eens met
code:
1
getConnection(String url, String user, String password)

in plaats van
code:
1
getConnection(String url)

Verwijderd

Topicstarter
Ok, met
code:
1
getConnection(url)

werkt het wel, maar ik wil de complete url in een externe file hebben staan, zodat het programma dus weet met welke database, welk username en password hij moet connecten. Nu vraag ik me dus af in welk formaat DB2 die url nu wel wil accepteren...

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op dinsdag 30 oktober 2001 10:36 schreef cruesli het volgende:
Zo heet hij ook niet, het is maar een voorbeeld.

Neem jij dan maar als url
code:
1
jdbc:db2:pietje?username=blaat&password=blaat

:+
Schrijf dan meteen een duidelijk voorbeeld op want ik vond het zelf ook vrij vaag. En aangezien hij jou meehelpt mag je wel wat vriendelijker zijn.

Verwijderd

Topicstarter
Op dinsdag 30 oktober 2001 11:21 schreef Alarmnummer het volgende:

[..]

Schrijf dan meteen een duidelijk voorbeeld op want ik vond het zelf ook vrij vaag. En aangezien hij jou meehelpt mag je wel wat vriendelijker zijn.
Ok, excuses als het niet helemaal vriendelijk overkwam ofzo.

  • JapJap
  • Registratie: Maart 2001
  • Laatst online: 07-01 11:02
cruesli:
Ok, met
code:
1
getConnection(url)

werkt het wel, maar ik wil de complete url in een externe file hebben staan, zodat het programma dus weet met welke database, welk username en password hij moet connecten. Nu vraag ik me dus af in welk formaat DB2 die url nu wel wil accepteren...
:? Dus je kan wel connecten? Wat is het probleem dan?

Verwijderd

Topicstarter
Er moet met verschillende databases geconnect kunnen worden.

Er wordt daarvoor iedere keer een file ingeladen waar in een jdbc-url staat met de gegevens voor die database, dus bijvoorbeeld
code:
1
jdbc:mysql://host:poort/dbnaam?user=blaat&password=blaat

En een andere keer weer
code:
1
jdbc:postgresql://host:poort/dbnaam?user=blaat&password=blaat

Voor mysql en postgres gaat dit nu prima, maar voor db2 krijg ik het nog niet aan de praat.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Kun je dan niet overal
code:
1
getConnection(String url, String user, String password)

ipv
code:
1
getConnection(String url)



gebruiken?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

en deze heb ik een tijdje gebruikt voor db connecties mbv properties file:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import java.io.*;
import java.util.*;
import java.sql.*;

public class DatabaseHelper
{
    private Connection connection=null;
    private String databaseURL;
    private String driverName;
    
    public DatabaseHelper(String filePath)throws DatabaseHelperException
    {
        try
        {
            System.out.print("Trying to read property file:");
            //read from top of any classpath entry
            InputStream is = getClass().getResourceAsStream("/" + filePath);
            Properties p = new Properties();
            p.load(is);
                //set the properties
                driverName = p.getProperty("dbDriver");
            databaseURL = p.getProperty("dbURL");
            String dbUser = p.getProperty("dbUser");
            String dbPassword = p.getProperty("dbPassword");
            System.out.println("Ok");

            System.out.println("DatabaseURL:"+databaseURL);
            System.out.println("Driver:"+driverName);
            
            
            System.out.print("Checking driver:");
            Driver driver = (Driver)Class.forName(driverName).newInstance();
            if(!driver.acceptsURL(databaseURL))
                throw new DatabaseHelperException("De driver is niet geschikt voor database");                                      
            System.out.println("Ok");
            
            // load the driver
            System.out.print("Trying to load driver:");                 
            Class.forName(driverName);
            System.out.println("Ok");
            
            
            //make Connection
            System.out.print("Trying to make connection:");
            connection =  DriverManager.getConnection(databaseURL, dbUser, dbPassword);
            System.out.println("Ok");
        }
        catch(SQLException e)
        {
            printSQLException(e);
            e.printStackTrace();
            throw new DatabaseHelperException("Er is iets misgegaan bij het maken van een connectie naar de database.");
        }
        catch(ClassNotFoundException e)
        {
            e.printStackTrace();
            throw new DatabaseHelperException("De driver voor de database is niet gevonden");
        }
        catch(IOException e)
        {
            e.printStackTrace();
            throw new DatabaseHelperException("Er is iets misgegaan bij het inlezen van de propertie file");
        }
        catch(Exception e)
        {
            e.printStackTrace();
            throw new DatabaseHelperException("Er is iets misgegaan bij het inladen van de driver.");
        }
    }
    
    public Connection getConnection()
    {
        return connection;
    }
    
    public String getDatabaseURL()
    {
        return databaseURL;
    }
    
    public String getDriverName()
    {
        return driverName;
    }
    
        /**
     *Drukt een SQLExceptie af op system.out.
     *
     * @param   e  de te afdrukken SQLExceptie
    */
    public static void printSQLException(SQLException e) 
    {
        System.out.println("");
        System.out.println("-------------------[SQL Message]-------------------");
        System.out.println(e.getMessage());
        e = e.getNextException();
        while (e!=null)
        {
            System.out.println(e.getMessage());
            e = e.getNextException();               
        }
        System.out.println("-----------------[End SQL Message]-----------------");
    }
    
    public void finalize()throws Throwable
    {
        try
        {
            System.out.println("");
            System.out.println("Database URL:"+databaseURL);
            System.out.print("Trying to close connection :");
            connection.close();
            System.out.println("Ok");
        }
        catch(SQLException e)
        {
            printSQLException(e);
        }       
        super.finalize();
    }
}

Verwijderd

Topicstarter
Ja, dat kan allemaal wel, maar het is toch standaard om een username en password in een jdbc-url te vermelden?
Pagina: 1