# suche Erstanschub für DB-Zugriff



## famco (21. Mrz 2011)

Hallo,
als Umsteiger lerne ich gerade Java und möchte auf eine bestehende MS-SQL-Server Datenbank zugreifen. Habe mich durch diverse Tutorials gewühlt und bin jetzt völlig durcheinander bezüglich verschiedener Treibertypen, Treiber und wohin sie geladen werden müssen  ...
Es wäre supernett, wenn mir jemand helfen könnte. Ideal wäre ein 10++ Zeiler, der das Anmelden an der Datenbank und den lesenden Zugriff auf eine beliebige Tabelle zeigt. Und natürlich, welchen Treiber (genau) man wohin (genau) kopieren muss. 
Nachtrag: SQL beherrsche ich, mir fehlt nur das Knowhow von Java aus auf die DB zu kommen und ein simples Select auszuführen ...

Vielen Dank
Famco


----------



## Michael... (21. Mrz 2011)

Einen umfassenden Überblick, gibt's hier:
Galileo Computing :: Java ist auch eine Insel – 24 Datenbankmanagement mit JDBC
Schritte zur Datenbankabfrage
Beispiel Code ist ganz unten auf der Seite zu finden:
Galileo Computing :: Java ist auch eine Insel – 24.4 Eine Beispielabfrage


----------



## maki (21. Mrz 2011)

> als Umsteiger lerne ich gerade Java und möchte auf eine bestehende MS-SQL-Server Datenbank zugreifen


Erfahrungsgemäss ist es nicht leicht, sich als Einsteiger/Umsteiger gleich auf fortgeschrittene Themen zu stürzen, und dazu gehört JDBC nunmal.

Generelle Tipps:
Verstehe auf jedenfall was der Classpath ist und wozu man ihn braucht. Suche dir einen JDBC Treiber für den MS SQL Server aus (jTDS oder den MS JDBC Treiber), lies die Doku (keine schlechten Blogs), da steht dann alles drinnen.


----------



## famco (22. Mrz 2011)

Erst einmal Danke für die Antworten. Ich habe unter Berücksichtigung eurer Hinweise weiter geforscht und folgenden Code geschrieben:

```
package msdbtest;

import java.sql.Connection;
import java.sql.DriverManager;
public class Main {

    public static void main(String[] args) {
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/master", "sa", "satest");
            System.out.println("connected");
        } catch (Exception e) {
            //       e.printStackTrace();
            System.out.println(e.getMessage());
        }
    }
}
```
Die Anmeldung funktioniert leider nicht, der Treiber meldet "Connection refused: connect"
SQL-State ist "08S01"
Die Anmeldeinformationen sind garantiert korrekt, denn mit meiner alten Entwicklingsumgebung kann ich mich mit diesem User und diesem Kennwort korrekt anmelden und mit der DB arbeiten.
Hat jemand einen Tipp für mich ?


----------



## maki (22. Mrz 2011)

Ist denn der Port offen? (Deine alte IDE nutzt wohl kein JDBC nehme ich an)

Kann man schnell testen mit telnet:
[c]telnet <SERVER_IP> 1433[/c]
Wenn es da auch keine Verbindung gibt, muss der Port (1433) erst aktiviert werden.


----------



## famco (22. Mrz 2011)

Danke, es kann keine Verbindung hergestellt werden. Aber die DB liegt auf meinem Rechner (localhost). Muss ich da auch einen Port öffnen ? und Wenn ja, wie ?

Danke


----------



## maki (22. Mrz 2011)

Wenn du mir verrätst welche Version des MS-SQL Server du da genau nutzt, könnte ich schnell googeln 

Hier zB. für den MS-SQL Server 2005: How to configure SQL Server 2005 to allow remote connections


----------



## famco (22. Mrz 2011)

Danke, hab selbst schon gegooglet. Das Probelm ist, dass die bei mir laufende MSDE (Microsoft-Desktop-Engine)  vom Netzwerk her problemlos erreichbar ist. Das gleiche gilt auch für eine MS Express 2008 Engine. 
Administrationstools für den M$SQL-Server habe ich nicht ($$$ :-( ). Wenn ich mit meinem Codeschnipsel einen nicht existierenden Server angebe erhalte ich die NAchricht "unkonwn server host name 'testhost'. Also scheint die generelle "suche" nach dem Server zu funktionieren ...


----------



## maki (22. Mrz 2011)

k.A. was du meinst.
Du musst deine SQL Server Instanz so konfigurieren, dass der Port 1433 aktiviert wird, wie oben beschrieben.
Das der Port nicht offen ist hast du ja per Telnet festgestellt, richtig?


----------



## famco (22. Mrz 2011)

habe es gefunden !!! Der installierte Server ist eine sogenannte benamte Instanz. Wenn ich den Connectstring um ;instance=xxxxx  erweitere geht es problemlos !!! Telnet geht dann allerdings auch nicht ...

Danke


----------

