Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

JDBC Verbindung zu einem MSSQL Server2k

Empfohlene Antworten

Veröffentlicht

Hi Community,

Versuche grade Mittels einer JDBC Verbindung Kontakt zu einem MSSQL 2k Server herzustellen. Hab mir schon den richtigen JDBC Treiber runtergeladen und Installiert.

Hab jetzt ein kleines Testprogramm geschrieben um zu Testen ob das ganze überhaupt funktioniert bevor ich mich an das richtige Programm setze.

import java.sql.*;

import java.io.*;

public class DBZugriff {

    public static void main(String[] args) {

	    String sqlDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

		String sqlConnStr = "jdbc:microsoft:sqlserver://GXDEFR-S3007\\MSSQL; DatabaseName=LIMS_View;User=LIMS_View;Password=xxx";

		String query = "SELECT * FROM neueDaten1198 WHERE USER_SUBMISSIONID = 34206330-113294";

		Class.forName(sqlDriver);

		Connection con = DriverManager.getConnection(sqlConnStr);

	    Statement stmt = con.createStatement();

	    ResultSet rs = stmt.executeQuery(query);

	    while (rs.next()){

	    	System.out.println(rs.getInt("WASSERGEHALT"));

	    }

	    rs.close();

	    stmt.close();

    }

}

Eigentlich müsste das so funktionieren. Aber er schmeisst mir 8 Fehlermeldungen raus

H:\DATA\Java\DBZugriff.java:26: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown

Class.forName(sqlDriver);

^

H:\DATA\Java\DBZugriff.java:27: unreported exception java.sql.SQLException; must be caught or declared to be thrown

Connection con = DriverManager.getConnection(sqlConnStr);

^

H:\DATA\Java\DBZugriff.java:28: unreported exception java.sql.SQLException; must be caught or declared to be thrown

Statement stmt = con.createStatement();

^

H:\DATA\Java\DBZugriff.java:29: unreported exception java.sql.SQLException; must be caught or declared to be thrown

ResultSet rs = stmt.executeQuery(query);

^

H:\DATA\Java\DBZugriff.java:30: unreported exception java.sql.SQLException; must be caught or declared to be thrown

while (rs.next()){

^

H:\DATA\Java\DBZugriff.java:31: unreported exception java.sql.SQLException; must be caught or declared to be thrown

System.out.println(rs.getInt("WASSERGEHALT"));

^

H:\DATA\Java\DBZugriff.java:33: unreported exception java.sql.SQLException; must be caught or declared to be thrown

rs.close();

^

H:\DATA\Java\DBZugriff.java:34: unreported exception java.sql.SQLException; must be caught or declared to be thrown

stmt.close();

Wäre sehr nett wenn Ihr mir Helfen könntet.

Greetz

dark-lost-soul

import java.sql.*;

import java.io.*;

public class DBZugriff {

    public static void main(String[] args) [B]throws Exception[/B] {

	    String sqlDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

		String sqlConnStr = "jdbc:microsoft:sqlserver://GXDEFR-S3007\\MSSQL; DatabaseName=LIMS_View;User=LIMS_View;Password=xxx";

		String query = "SELECT * FROM neueDaten1198 WHERE USER_SUBMISSIONID = 34206330-113294";

		Class.forName(sqlDriver);

		Connection con = DriverManager.getConnection(sqlConnStr);

	    Statement stmt = con.createStatement();

	    ResultSet rs = stmt.executeQuery(query);

	    while (rs.next()){

	    	System.out.println(rs.getInt("WASSERGEHALT"));

	    }

	    rs.close();

	    stmt.close();

    }

}

Sql Befehle werfen SqlExceptions die zwingend behandelt werden müssen.

Entweder du wirfst sie so wie oben angegeben weiter oder du umschließt deinen Code mit einem try catch Block.

Außerdem ist der Treiber nicht im classpath deiner Anwendung.

Wie startest du die Anwendung?

Gruß Jaraz

Jetzt weiss ich was ich vergessen habe :upps

hab erst einmal mit der throws exception gemacht das läuft so halb werd jetzt mal schnell try & catch blöcke einbaue um die fehler auszulesen um zu gucken wo der fehler ist.

Außerdem ist der Treiber nicht im classpath deiner Anwendung.

was meinst du damit?

Ist nen konsolen programm was ich schnell im JCreator geschrieben hab.

Mit eclipse komm ich noch nicht wirklich zurecht. Ist wie gesagt nur nen Testprogramm um zu gucken ob das mit der verbindung überhaupt funktioniert

@Peacemaker danke für die Links :)


import java.sql.*;

import java.io.*;

public class DBZugriff {

    public static void main(String[] args){

	    String sqlDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

		String sqlConnStr = "jdbc:microsoft:sqlserver://GXDEFR-S3007\\MSSQL; DatabaseName=LIMS_View;User=LIMS_View;Password=limslims";

		String query = "SELECT * FROM neueDaten1198 WHERE USER_SUBMISSIONID = 34206330-113294";

		try{

			Class.forName(sqlDriver);

		}

		catch (ClassNotFoundException ce){	

			System.out.println("ClassNotFound-FEHLER: " + ce.getMessage());	

		}

		try{		

			Connection con = DriverManager.getConnection(sqlConnStr);

	    	Statement stmt = con.createStatement();

	    	ResultSet rs = stmt.executeQuery(query);

	  	    while (rs.next()){

	    		System.out.println(rs.getInt("WASSERGEHALT"));

	    	}

	    	rs.close();

	    	stmt.close();

	    }

	    catch (SQLException e){

	   		System.out.println("SQL-FEHLER: " + e.getMessage());	

	   	}

    }

}

Hab jetzt folgende Exceptions bekommen

ClassNotFound-FEHLER: com.microsoft.jdbc.sqlserver.SQLServerDriver

SQL-FEHLER: No suitable driver found for jdbc:microsoft:sqlserver://GXDEFR-S3007\MSSQL; DatabaseName=LIMS_View;User=LIMS_View;Password=******

Die erste finde ich schon komisch da ich den Driver aus der Hilfe des JDBC Treibers kopiert habe der kann also nicht falsch sein

und die 2. resultiert daraus das das laden der klasse schon nicht funktioniert hat.

Bitte! Der Java Developers Almanac ist einfach immer wieder nützlich. ;)

Vielleicht hilft zum Thema Classpath der folgende Link weiter:

JAVA-Doku Die CLASSPATH Variable

Hmm hatte den falschen JDBC Treiber installiert aber selbst mit dem richtigen haut es einfach nicht hin :(

Habs mal mit nem neustart probiert auch fehlanzeige werd mir jetzt mal das classpath angucken vielleicht bringt mich das weiter

btw danke für den link :)

hmm das mit dem classpath hilft mir grade irgendwie auch nicht weil ich nicht weiss wie ich das in verbindung mit dem jdbc treiber benutzen soll :(

Jetzt hab ich herrausgefunden wie es ungefähr funktioniert aber es funktioniert net so richtig wie es sollte

set CLASSPATH="C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar";

ohne anführungszeichen bekomm ich 40 errors (liegt denk ich daran das im ordnername ein for enthalten ist

und mit hab ich immerhin 12 mal den gleichen fehler

H:\DATA\Java\DBZugriff.java:15: illegal escape character

set CLASSPATH="C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar";

und laut syntax benutzt man keine anführungszeichen.

hab die 3 dateien einfach mal auf C gelegt um das for zu vermeiden aber das hilft auch nicht

set CLASSPATH=C:\msbase.jar;C:\msutil.jar;C:\mssqlserver.jar;

Servus!

Du solltest in meinen Augen den Treiber schon bei Deiner Software aufbewahren und die globale CLASSPATH-Variable in Ruhe lassen. Die kann ja jeder ändern und dann läuft Dein Programm nicht mehr. Arbeite doch mit dem Kommandozeilenschalter -classpath (die Doku zu java und javac weiß mehr). Dann kannst Du Dein Programm mit allen benötigten Bibliotheken ausliefern und z.B. über ein Startskript den korrekten Aufruf zusammenbauen.

Peter

Das Problem ist ich bin noch gar nicht so Fit in Java. Das Programm muss im laufe der nächsten woche fertig werden und es soll nur Tabellen von einem SQL server anzeigen die Access nicht anzeigen kann weil die Tabellen zu viele Spalten haben.

Ich bekomm das ja nichtmal so zum Laufen da brauch ich auch keine skripts(was ich noch nicht kann aber kann man ja lernen) zu schreiben

Habs endlich geschafft :)

Hab anstatt einer java datei ein Projekt erstellt dort habe ich die 3 jar files included und es lief :)

danke für eure hilfe :)

Irgendwie net so toll das man nicht immer editieren kann -.- muss ich dauernd doppeltposts machen.

Hab mal ne andere frage wie bekomme ich alle daten aus dem resultset in eine jtable? Wäre schön wenn mir da jemand weiterhelfen könnte

greetz

dark-lost-soul

erstemal danke für die hilfe

ich wusst jetzt net ob ich nen neuen thread aufmachen sollte oder net in manchen foren wird es net gerne gesehen wenn man wegen jeder kleinigkeit einen neuen thread aufmacht

das beispiel sieht erstemal ganz gut aus nur ich habe noch ein kleines problem mit den spaltennamen.

die muss ich ja vorher festlegen aber es kann sein das die in ein paar monaten wieder anders sind. die einzigste lösung wäre die spaltennamen noch in eine andere tabelle auf den server zu legen

Das hat schonmal gut funktioniert danke. Hab auch schon mittlerweile die daten in der tabelle aber irgendwie hab ich keine spaltenname und die formatieren passt noch nicht.

Hab ich beiden noch nicht hinbekommen

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.