Zum Inhalt springen

JDBC Verbindung zu einem MSSQL Server2k


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

@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.

Geschrieben

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 :(

Geschrieben

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;

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...