# (JDBC) MS SQL Server 2000 Datenbankverbindung mit JTDS



## Thomas Darimont (8. Juni 2004)

Hallo!

 Hier mal ein Beispiel wie man eine Datenbankverbindung mit der MS SQL Server 2000 Datenbank unter Verwendung des Open Source JDBC Treibers JTDS herstellt.


 1) jtdsXXXXX.jar herunterladen und in Classpath aufnehmen [1]:

 2) Neue Java Datei erstellen mit folgendem Inhalt:


```
import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Statement;
 
 import net.sourceforge.jtds.jdbcx.TdsDataSource;
 
 /*
  * Created on 08.06.2004
  * @author Thomas Darimont
  */
 public class Main {
 
 	
 	/*
 	 * In einem static Block laden wir den Datenbanktreiber 
 	 * Dieser Block wird ausgeführt wenn die Klasse geladen wird also noch
 	 * vor (!) der main Methode
 	Nicht notwendig ... TdsDataSource DataSource laedt den Treiber fuer uns...
 	static {
 		try {
 			Class.forName("net.sourceforge.jtds.jdbc.Driver");
 		} catch (Exception e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
 	}
  */ 
 	public static void main(String[] args) {
 		new Main().doDBStuff();
 	}
 
 	/**
 	 * 
 	 */
 	private void doDBStuff() {
 		
 		//Unsere Testdatenquelle
 		TdsDataSource datasource = new TdsDataSource();
 		datasource.setDatabaseName("pubs"); 
 		datasource.setServerName("localhost");
 		datasource.setUser("Tom"); //Benutzername im SQL Server mit Zugriff auf pubs
 		datasource.setPassword("javacore"); // Benutzerpasswort im SQL Server
 		datasource.setPortNumber(1433); //Standard MS SQL Server 2000 Port
 		datasource.setCharset("UTF-8"); //Mein aktuell beim MS SQL Server 2000 
 		                                // eingestelltes Zeichen Encoding (Wichtig!)
 		datasource.setDescription("JTDS Datasource");
 
 		Connection connection = null;
 		try {
 			//Verbindung aufbauen
 			connection = datasource.getConnection();
 
 			if (connection == null)
 				throw new SQLException("con == null");
 
 			Statement stmt = connection.createStatement();
 
 			//Abfrage definieren
 			ResultSet rs = stmt.executeQuery("SELECT * FROM stores");
 
 			if (rs == null)
 				throw new SQLException("rs == null");
 			
 			ResultSetMetaData rsmd = rs.getMetaData();
 			//Anzahl der Spalten ermitteln
 			int clmCnt = rsmd.getColumnCount();
 
 			//Datensätze ausgeben 
 			while (rs.next()) {
 				for (int i = 1; i <= clmCnt; i++)
 					System.out.print(rs.getString(i) + " ");
 				System.out.println();
 			}
 			
 			//Verbindung schließen
 			connection.close();
 
 		} catch (SQLException e) {
 			e.printStackTrace();
 		}
 
 	}
 }
```
 
 3) Nach dem alles kompiliert ist könnt ihr das Programm starten.

 Ausgabe bei mir:


```
6380 Eric the Read Books 788 Catamaugus Ave. Seattle WA 98056 
 7066 Barnum's 567 Pasadena Ave. Tustin CA 92789 
 7067 News & Brews 577 First St. Los Gatos CA 96745 
 7131 Doc-U-Mat: Quality Laundry and Books 24-A Avogadro Way Remulade WA 98014 
 7896 Fricative Bookshop 89 Madison St. Fremont CA 90019 
 8042 Bookbeat 679 Carson St. Portland OR 89076
```
 

 Hoffe, dass hilft euch weiter ... bei Problemen ist die FAQ [3] recht nützlich

 PS. Bei meinem Beispiel ist die MS SQL Server Authentifizierung auf "SQL Server Authentication"
    gestellt. JTDS Unterstützt aber laut [2] [Abschnitt Domain] auch die Windows Authentication Method.

 Links:

Windows Authentifizierung über NTLM mit JTDS: http://www.tutorials.de/forum/java/221901-sql-server-anbindung-funktioniert-nicht-so-ganz.html

 [1] http://sourceforge.net/project/showfiles.php?group_id=33291
 [2] http://jtds.sourceforge.net/faq.html#urlFormat
 [3] http://jtds.sourceforge.net/faq.html

 Gruß Tom


----------



## stud3 (28. Dezember 2004)

hallo,

da ich beinah an einem Projekt teilzunehmen bin, das um einen Zugriff auf eine zentrale Datenbank (in dem MS SQL Server) geht, würde mich sehr interessieren, ob Java gut mit MS SQL Server arbeiten kann, ich muß eine Datenbankeingabemaske (vielleicht mit Swing) erstellen, wo es möglich ist, auf eine zentrale Datenbank zuzugreifen. Jemand hat mir empfohlen es mit ASP zu erstellen, aber ich weiß ASP ist eine Serversprache, ob man damit eine Datenbankeingabemaske aubauen kann, weiß ich nicht... ich wäre Ihnen für einen Tipp dankbar. Grüße.


----------



## torsch2711 (28. Dezember 2004)

stud3 hat gesagt.:
			
		

> hallo,
> 
> da ich beinah an einem Projekt teilzunehmen bin, das um einen Zugriff auf eine zentrale Datenbank (in dem MS SQL Server) geht, würde mich sehr interessieren, ob Java gut mit MS SQL Server arbeiten kann, ich muß eine Datenbankeingabemaske (vielleicht mit Swing) erstellen, wo es möglich ist, auf eine zentrale Datenbank zuzugreifen. Jemand hat mir empfohlen es mit ASP zu erstellen, aber ich weiß ASP ist eine Serversprache, ob man damit eine Datenbankeingabemaske aubauen kann, weiß ich nicht... ich wäre Ihnen für einen Tipp dankbar. Grüße.




Also ASP ist das pendant zu JSP und PHP. Du baust dir eine Web-Eingabe maske unter Verwendung von Forms (HTML) und Sessions. Uns ASP verarbeitet diese Weiter und du kannst dynamisch deine Webseite damit zusammenbauen. Kommt immer darauf an, was Du machen willst.

Wenn du eine Standalone Applikation erstellen willst, sprich keine Browser-gestützte Anwendung, liegst du damit schon ein wenig falsch, wenn du ASP benutzen willst. Dann kommen sprachen wie Java, C++, etc. in frage.

Grüsse
Torsten


----------



## stud3 (28. Dezember 2004)

zuerst danke für die schnelle Antwort, ich würde es gerne in Java machen, da ich keine ASP Kenntnisse habe, ich gehe davon aus, dass Java mit jedem Typ von DBMS gut funktionieren kann : Oracle, MS SQL Server 2000, oder sogar mit einem Data Warehouse, hoffentlich irre ich mich nicht...


----------



## torsch2711 (29. Dezember 2004)

stud3 hat gesagt.:
			
		

> zuerst danke für die schnelle Antwort, ich würde es gerne in Java machen, da ich keine ASP Kenntnisse habe, ich gehe davon aus, dass Java mit jedem Typ von DBMS gut funktionieren kann : Oracle, MS SQL Server 2000, oder sogar mit einem Data Warehouse, hoffentlich irre ich mich nicht...




Es funktioniert nur so gut, wie die Hersteller der DB's oder bzw. dritte, die Treiber für die DB's für java zur verfügung stellen. Wie gesagt eine Abhängigkeit ist immer da. Ist aber überall dasselbe Problem.


----------



## jounnie (4. April 2007)

danke für den tollen Tipp, habe es gebraucht  nun möchte ich aber meine Applikation weitergeben und brauche ja dafür die .jar Datei...ist sicherlich eine dumme Frage, ich programmiere ja noch nicht soo lange JAVA, aber wie könnte ich mein JAVAProgramm weitergeben? muss ich ein Setup dafür machen? irgendwie denk ich nicht....
und wegen der .jar mit den MSSQL-Treiber. Wie gebe ich das mit? 
aber bitte nicht überanstrengen, ja? 

dankeschön schon Mal im Vorraus ^^

jonny


----------



## -AbeAdapti- (12. Februar 2009)

Hi,
ist jemand bekannt ob jTDS auch mit MSSQL 2008 arbeitet?

Habs mal oberflächlich getestet und das ging - spricht was dagegen?

Gruß


----------



## ickzon (30. Dezember 2009)

Ich weiß, die Frage ist schön etwas älter ;-) Aber ja, jTDS arbeitet problemlos mit dem SQL Server 2008 zusammen und es spricht grundsätzlich nix dagegen, die zusammen zu nutzen. Allerdings unterstützt der Treiber keine der neuen Features des Servers, sondern behandelt den im Endeffekt genauso, wie einen 2005er Server. Solltest du tatsächlich irgendwelche Probleme damit haben, melde dich bitte im jTDS Forum auf SourceForge. Bisher gibt es zu diesem Thema praktisch noch kein Feedback (nur deshalb schreib ich hier eigentlich auch rein), ich konnte allerdings auch mit ausführlichen Tests und den paarhundert Unit-Tests von jTDS selbst bisher noch keine Probleme finden.

Trallalli,
momo


----------

