# Keine Verbindung



## cam (19. Nov 2008)

Hallo,

ich versuche eine Verbindung zu einer MS-SQL Datenbank (2008) aufzubauen.
Am Anfang kam immer, dass der Treiber nicht zu finden ist, jetzt kommt nur noch meine Fehlermeldung.
Der Treiber ist im Projekt in der Bibliothek und auch im Classpath.
Kann mir jemand sagen, was ich falsch mache?


```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DBtest {
	

	
	public static void main(String[] args){
		Connection cn = null;
		Statement  st = null;
		ResultSet rs = null;
	try{
		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	    cn = DriverManager.getConnection( "jdbc:jtds:sqlserver://PC:1433/DB", "sa", "" ); 
	    st = cn.createStatement();
	    rs = st.executeQuery( "select * from test" );
	    while(rs.next()) {
	        System.out.print("Name : ");
	        System.out.println(rs.getString(1));
	        System.out.print("Passwort: ");
	        System.out.println(rs.getString(2));
	    }
	 } catch( Exception ex ) {
	   System.out.println("Keine Verbindung");
	 }
	}
}
```


----------



## L-ectron-X (19. Nov 2008)

Liegt wahrscheinlich an deinem Connection-String.
Guck mal hier ist das für die MSSQL noch mal aufgeführt: http://wiki.byte-welt.de/wiki/Datenbankverbindung_(Java)


----------



## Gast (19. Nov 2008)

@L-ectron-X

cam verwendet den besseren JDBC Treiber, nämlich den von jTDS.

@cam
Wenn du die Exception schluckst wirst diu wohl nie erfahren woran es liegt, exceptions immer ausgeben!



> } catch( Exception ex ) {
> System.out.println("Keine Verbindung:"+ ex);
> }


----------



## cam (20. Nov 2008)

Also das sagt nu die Fehlermeldung.

Fehler bei der Anmeldung für den Benutzer 'sa'.

Ich habe noch nicht allzu viel Erfahrung mit Datenbankanbindungen - funktioniert das vielleicht nicht, weil ich bei meiner Datenbank kein Passwort habe?


----------



## cam (20. Nov 2008)

Ich habe meinen connectionString noch mal geändert:


```
cn = DriverManager.getConnection( "jdbc:sqlserver://localhost\\Cathleen-PCGROss; databaseName = Lager", "sa", "" );
```

Es trat folgende Fehlermeldung auf:

Keine Verbindung: com.microsoft.sqlserver.jdbc.SQLServerException: The connection to the host localhost, named instance cathleen-pcgross has failed. Error: java.net.SocketTimeoutException: Receive timed out. Please verify the server and instance names, check that no firewall is blocking UDP traffic to port 1434, and for SQL Server 2005 or later, verify that the SQL Server Browser service is running on the host.

Also der SQL Server-Browser wird ausgeführt, bei dem Rest bin ich gerade ziemlich hilflos.


----------



## Verjigorm (20. Nov 2008)

Port ist auf Standardport 1433?


edit: schau mal da:
http://msdn.microsoft.com/de-de/library/ms378428(SQL.90).aspx


----------



## cam (20. Nov 2008)

Ja, ist er.

Jetzt kommt folgende Meldung:

Anmeldefehler. Die Anmeldung stammt aus einer nicht vertrauenswürdigen Domäne und kann mit der Windows-Authentifizierung nicht verwendet werden.

*verzweifel*


----------



## Landei (20. Nov 2008)

Die Datenbank kann per Windows-Authentifizierung, per SQL-Authentifizierung oder beidem ähm... authentifizieren. Das läßt sich irgendwo an der Datenbank einstellen. Deine DB steht offenbar nur auf Windows-Authentifizierung. Schalte mal beide Möglichkeiten ein. 
Übrigens: Gibt es kein Password?


----------



## cam (20. Nov 2008)

Ich habe die Authentifizierung auf beides gestellt - gleiche Meldung.
Nein, es gibt kein Passwort, soll ja erst mal nur zum Testen dienen und nur auf meinem Rechner.


----------



## L-ectron-X (20. Nov 2008)

Gast hat gesagt.:
			
		

> @L-ectron-X
> 
> cam verwendet den besseren JDBC Treiber, nämlich den von jTDS.


Stimmt, hab ich übersehen. Aber du bist auch nicht viel besser... 
Der Treibername stimmt nämlich nicht. Das ist eine völlig eigene Implementierung des Treibers, warum sollte der dann den MS-Namen verwenden.

Der richtige Treibername lautet: *net.sourceforge.jtds.jdbc.Driver*
Dann sollte alles gehen. Wenn nicht, solltest du erst mal die Referenz-Implementierung von MS versuchen.


----------



## Gast (20. Nov 2008)

>> Wenn nicht, solltest du erst mal die Referenz-Implementierung von MS versuchen.

Von der kann ihc nur abraten, taugt nicht viel, muss auhc erst installiert werden (war zumindest früher so).
Natürlich hast du recht, der hier gezeigte Code versucht den MS Treiber zu verwenden, die URL ist aber von jTDS ...

Das eigentliche Problem ist ein anderes:


> Ich habe die Authentifizierung auf beides gestellt - gleiche Meldung.


Das geht gar nicht, du musst bei jedem Login entscheiden, ob es per Windows auth oder per Sql Auth funktionieren soll, letzteres ist zu bevorzugen.


----------



## Gast (20. Nov 2008)

Ps: Mit login meine ich nicht den Login versuch per JDBC, sondern den Account im SQL Server selbst.


----------



## cam (23. Nov 2008)

Ich habe es endlich geschafft!!   

Nachdem ich den SQL-Server neu installiert habe, die SQL-Authentifizierung genommen habe und den String etwas angepasst, steht die Verbindung.

Danke für eure Hilfe!!!


----------

