# Datenbank problem



## SubSonniC (10. Okt 2007)

Hallo,

angenommen ich habe ein programm und eine schon dazugehörende erstellte JavaDB

wie ist es möglich diese JavaDB auch auf anderen Rechner, ohne das auf diesen im system eine JavaDB installiert wurde, zu nutzen.

bisher arbeite ich mit netbeans und da habe ich die JavaDB entweder in java6 oder durch netbenas dabei.

ich weis nicht ob java 6 oder eine seperate JavaDB installiert ist.

will ich auch nich

ich will einfach nur das mein programm so wie es ist auf allen rechnern auf denen mind. java 5 installiert ist läuft (mit datanbankzugriffen)

wie mach ich sowas.

normal ist das hier.


```
try{
            
            DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
        }
        catch(Exception e){
            System.out.println("Treiber konnte nicht geladen werden");
        }
        
        try{
            conn = DriverManager.getConnection("jdbc:derby://localhost:1527/StudWorkDB", "admin", "password");
        }
        catch(Exception e){
            System.out.println("verbindung zur Datenbank konnte nicht hergestellt werden");
        }
```

aber sollte ich den ordner verschieben mit der datenbank findet er sie nicht mehr.

ich hab sowas noch nie gemacht.

MFG

SubSonniC


----------



## tuxedo (10. Okt 2007)

Sprichst du jetzt von einer Client-Server Anwendung? Wenn ja schau mal nach RMI.

-Alex


----------



## SubSonniC (10. Okt 2007)

Nein ich rede von einer desktop appplication.

ich möchte den embedded Driver von javadb integrieren und damit dann auf eine db zugreifen die dem programm beiliegt.

bis jetzt bin ich so weit


```
Connection conn = null;
    
    
    /** Creates a new instance of DBManager */
    public DBManager() {
        
    String DBDir = System.getProperty("user.dir")+"/StudWorkDB";

    // Set the db system directory.
    System.setProperty("derby.system.home", DBDir);
       
        
        try{
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        }
        catch(Exception e){
            System.out.println("Treiber konnte nicht geladen werden");
        }
        
        try{
            conn = DriverManager.getConnection("jdbc:derby:StudWorkDB;reate=false;user=admin;password=password;databeseName=StudWorkDB");
        }
        catch(Exception e){
            System.out.println("verbindung zur Datenbank konnte nicht hergestellt werden");
        }
        
        
        
        
    }
```

aber immernoch bekomm ich die exception behandlung ausgegeben.

so soll die ordnerstruktor nachher aussehen. und so möchte ich sie auf jedem pc ausgepackt wiederfinden und ausführen.
egal wo ich auf diesem rechner mich auch grad befinde und egal ob auf diesem rechner eine javadb installiert ist (aslo ein db server) läuft.


- ~
   - StudWork
      - StudWork.jar
   - StudWorkDB
      - db files


_L-ectron-X hat diesen Beitrag am 10.10.2007 um 23:41 editiert.
Code-Tags eingefügt._


----------



## tuxedo (10. Okt 2007)

Zuerst: Lerne BB-Code-Tags zu verwenden. Das ist ja grausam, so ganz ohne Syntax-Highlighting ...

Ich blick's trotzdem noch nicht so ganz was du vor hast.

Wenn du eine JavaDB so benutzt, liegen die ganzen Daten der DB in einer File. Und jedes (Java-)Programm, welches auf einen JavaDB zugreifen kann, kann auf diese File benutzen. Egal auf welchem Rechner. 

Wichtig ist nur: 

* Es muss ein (zur JRE) passender Treiber vorhanden sein
* Die Datenbankfile muss vorhanden sein.

Bzgl. deiner Exception-Behandlung: Probiers mal mit 


```
e.printStackTrace();
```

statt mit wenig-sagenden Sysout's ..

- Alex


----------



## SubSonniC (10. Okt 2007)

Also ich will eigendlich nur den derby Embedded Driver verwenden.

ich habe also in mein Projektordner einen unterordner *-/libs erstellet und dort die derby.client reinkopiert.
ich habe unter netbeans 5.5.1 dieses treiber unter diesem pfad in meinen classpath hinzugefügt.

ich habe weiterhin eine sql db generiert.
speciell für javadb

diesen ordner habe ich in meinen projektordner kopiert

soweit so gut


jetzt möchte aus meinem programm heraus diese db nutzen.


wie mach ich das.

bei mir klappt so jedenfalls nicht



```
public DBManager() {
        
        Connection con = null;
        Statement stmt = null;
  
        String driver  = "org.apache.derby.jdbc.EmbeddedDriver";
        String url     = "jdbc:derby:StudWorkDB";
        String user    = "admin";
        String passwd  = "password";
      
        String DBDir = System.getProperty("user.dir")+"/StudWorkDB";
        
        // Set the db system directory.
        System.setProperty("derby.system.home", DBDir);
        System.setProperty("jdbc:drivers", driver);
        
        
        try{
            Class.forName(driver);
        } catch(Exception e){
            e.printStackTrace();
        }
        
        try{
            conn = DriverManager.getConnection(url, user, passwd);
        } catch(Exception e){
            e.printStackTrace();
        }
        
        
        
        
    }
```


ich hoffe das hilft.




nachtrag:


aso mom mal.

ich habe die db die ich vorher mal mit netbeans und dem derbyclientDriver selbst über netbeans generieren lassen hab verwendet.

das ist natürlich ein ordner mit mehrerern dateien.

dann muss ich erst ne emdedded specifische db erstellen (lassen)?


_L-ectron-X hat diesen Beitrag am 10.10.2007 um 23:42 editiert.
Code-Tags eingefügt._


----------

