# MS SQL unter Netbeans OK - nach konvertieren Absturz



## GianaSisters (6. Dez 2011)

Hallo Zusammen,

ich habe mein Problem schon in einem anderen Teil des Forums beschrieben, aber ich denke hier bin ich besser aufgehoben. Ich benutze Netbeans und habe eine MS SQL Datenbank angeschlossen.
Dazu gehören in die Bücherei die Dateien msbase.jar, mssqlserver.jar und sqljdbc4.jar
Über netbeans kann ich die Datenbank einwandfrei ansteuern und z.b. den Befehl
strSQL = "DELETE FROM messung" ausführen.

Beim Konvertieren in die JAR-Datei kommt es leider zum Fehler, also nicht beim Konvertieren sondern beim Aufrufen.
Das ganze hängt sich beim aufrufen von:

mydb = DriverManager.getConnection(url, user, password);

auf. URL,USER und PASSWORD haben die richtigen Werte wie unkonvertiert.
Kann es sein, dass evtl ein Treiberfehler vor liegt ? Soll ich den ganzen Code mal posten oder weiß vielleicht Jemand schon was man da tun kann.
Vielen Dank schonmal im Vorraus,
Giana


----------



## GianaSisters (7. Dez 2011)

Hier ein paar Codeschnipsel die vielleicht weiter helfen mir zu helfen 

Wie gesagt, in meiner Netbeansumgebung funktioniert alles super.
Hab die Sachen nur aufs wichtige beschränkt.

Bei einem Mausklick:

```
SQLBefehlEinUndAusgabe SQLAusfuehren = null;
SQLAusfuehren = datenbankstarten();
```

Eine Entschlüsselung entsteht.
SQLAusfueren entsteht neu!


```
public SQLBefehlEinUndAusgabe datenbankstarten() throws Exception{
                   // db durch entschlüsselung erzeugen und löschen
                   File file = new File("config/db.dat");
  // Datei entschlüsseln
       // Entschlüsseln
         Verschluesselung vs = new Verschluesselung();
         vs.decryptFile("config/dab.dat", "config/db.dat", "xxxx");
         SQLBefehlEinUndAusgabe SQLAusfuehren = new SQLBefehlEinUndAusgabe("config/db.dat");
  // Datei löschen
    file.delete();

return SQLAusfuehren;
    }
```

Weiterleitung an die Zeile con.startedatenbank(Dateiname) 


```
public class SQLBefehlEinUndAusgabe {
    private String dateiName;
    Connector con = new Connector();
    public SQLBefehlEinUndAusgabe(String Dateiname) throws SQLException, ClassNotFoundException, FileNotFoundException, IOException{

        try {
        con.startedatenbank(Dateiname);
         } catch (SQLException ex) {
            System.out.println("Datenbank error");
           JOptionPane.showMessageDialog(null,"Datenbankverbindung fehlgeschlagen","Error", JOptionPane.CANCEL_OPTION);

         }
        System.out.println("Verbindung hergestelt");

    }
    int PrimID = 0;

    public void setDateiname(String datname) {
        dateiName = datname;
    };
```

Connector con sieht so aus:

```
public class Connector {
	public String sqlEingabe;
        public int zg;
        int autoIncKeyFromApi;
        Connection mydb;

public void startedatenbank(String Dateiname) throws SQLException, ClassNotFoundException, FileNotFoundException, IOException{
                Globales gl = new Globales();
                gl.setzen(Dateiname,1);
                String url = gl.url;
                String user = gl.user;
                String password = gl.password;
           
                Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");    
          //      System.out.println("Daten URL: " + url + " User: " + user + " PW: " + password);
       System.out.println("Todesbrunst start");
                mydb = DriverManager.getConnection(url, user, password);
       System.out.println("Todesbrunst endet");
            

        }
```

Also, die Zeile wo er sich aufhängt ist: mydb = DriverManager.getConnection(url, user, password);
die url, user and password sind genau richtig (logisch, weil ja über Netbeams klappts ja). Oder kanns sein, dass der Zeichensatz auf DOS-Ebene anders ist als in Netbeans, ists ein Sprachproblem ? 
Bitte helft mir,
Giana Sisters


----------



## GianaSisters (8. Dez 2011)

Oh man, schon wieder stundenlang rumgesucht und nichts hats gebracht.
Ich dachte zunächst, dass es vielleicht an dem Backslash in der URL liegt, dass da die komplierte Fassung nicht mit klar kommt. Aber daran lag es wohl nicht.
Jetzt habe ich rausgefunden, dass die Zeile:

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 

in Netbeans überflüssig ist und es auch ohne dem funktioniert.
Hilft das vielleicht weiter, das mir jemand helfen kann ? :rtfm:


----------



## GianaSisters (9. Dez 2011)

Ich habe das Programm jetzt einfach mal total gekürzt... 
Unter Netbeans funktionierts und nach der Konvertierung nicht mehr.
Da hängt er sich bei 
Connection mydb = DriverManager.getConnection(url, user, password);
auf. Hatte auch schon eine IP Adresse aus dem Hostnamen gemacht, daran kann es auch nicht liegen. Ich bitte bitte bitte um hilfe, dann könnte ich wieder ruhig schlafen wenn das gelöst wäre.
In den Libraries sind msbase.jar, mssqlserver.jar und sqljdbc4.jar



```
public class Datenbanktest {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");    
 
       System.out.println("Todesbrunst start");
       String url = "jdbc:sqlserver://TIMO-PC\\SQLEXPRESS:49168;databaseName=messdaten;Integrated Security=True";
       String user = "sa";
       String password = "sa";
       Connection mydb = DriverManager.getConnection(url, user, password);
       System.out.println("Todesbrunst endet");
    }
}
```


----------



## andiv (9. Dez 2011)

Mit welcher Java-Version führst du das Programm in Netbeans aus und mit welcher die JAR? Es gibt nämlich einen bekannten Bug in Java 1.6.0_29 so dass der MSSQL-Treiber nicht mehr funktioniert.


----------



## GianaSisters (9. Dez 2011)

Die Version außerhalb von Netbeans ist: 1.6.0_29-b11
Die Netbeansversion: Java: 1.6.0_26; Java HotSpot(TM) Client VM 20.1-b02

Was empfielst du ?

Ich grade gerade mal down.


----------



## GianaSisters (9. Dez 2011)

AndiV: Leider kann ich nur 1 Dank geben... Auf der Version 26 läuft es. Vielen vielen Dank... Jetzt wird das Programm dieses Jahr noch fertig !!! Super tolles Wochenende - kannst Stolz sein, dass Du mir so helfen konntest


----------

