Datenbankverbindung zu Ms Sql Server funktioniert nicht
Daniel Petratsch
- java
0 Slyh
Hallo!
Nun ärgere ich mich schon wieder einmal mit geraumer Zeit mit Java herum weil ich einfach nicht zu einem Ms Sql Server verbinden kann. Folgender Code verursacht immer die Fehlermeldung "java.sql.SQLException: No suitable driver" :
---------------------------------------->
import java.sql.*;
class Datenbanken_UE8_A1
{
public static void main(String args[])
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String dburl = "jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=Uni";
Connection conn = DriverManager.getConnection(dburl,"name","password");
}
catch(Exception e)
{
System.out.println(e);
}
}
}
---------------------------------------->
Ich habe die Microsoft Jdbc Treiber installiert und die Zip Archive als Klassenpfad angegeben. (im JCreator), keiene Ahnung ob das ausreicht, die Dokumentationen zu Fehlermeldungen die man im Internet findet sind ja wie immer mal umsonst.
Wäre sehr dankbar für einen hilfreichen Tipp, das kostet mich echt schon den den letzten Nerv :(
freundliche Grüsse,
Daniel
Hallo,
Folgender Code verursacht immer die Fehlermeldung "java.sql.SQLException: No suitable driver" :
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String dburl = "jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=Uni";
Connection conn = DriverManager.getConnection(dburl,"name","password");
}
catch(Exception e)
Schlechte Idee I. Fange nie, nie, nie Exception, Throwable, Error
oder dergleichen ab. Fange immer nur die konkrete Exception.
{
System.out.println(e);
Schlechte Idee II. Gib nicht nur die Meldung, sondern auch den Stacktrace
aus, damit du auch weißt, was da genau wo für eine Exception auftritt.
e.printStackTrace() ist dein Freund.
Nun, offensichtlich findet Java den JDBC-Treiber für den SqlServer,
da anderenfalls schon bei Class.forName() eine Exception geworfen
werden würde.
Wenn der Treiber also gefunden wird, und dieser tatsächlich für
den SqlServer sein sollte, was in Anbetracht des Klassennamens wohl
nicht so unwahrscheinlich ist, muß der Fehler wohl in der
Connection-URL liegen.
Ich spekuliere einfach mal wild, daß vor den Doppel-Slahes ein
Doppelpunkt fehlt.
Aus
jdbc:microsoft:sqlserver//localhost:1433
mach
jdbc:microsoft:sqlserver://localhost:1433
Vielleicht war das schon der ganze Fehler.
Gruß
Slyh
Hey Slyh,
Folgender Code verursacht immer die Fehlermeldung "java.sql.SQLException: No suitable driver" :
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String dburl = "jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=Uni";
Connection conn = DriverManager.getConnection(dburl,"name","password");
}
catch(Exception e)Schlechte Idee I. Fange nie, nie, nie Exception, Throwable, Error
oder dergleichen ab. Fange immer nur die konkrete Exception.{
System.out.println(e);Schlechte Idee II. Gib nicht nur die Meldung, sondern auch den Stacktrace
aus, damit du auch weißt, was da genau wo für eine Exception auftritt.e.printStackTrace() ist dein Freund.
Nun, offensichtlich findet Java den JDBC-Treiber für den SqlServer,
da anderenfalls schon bei Class.forName() eine Exception geworfen
werden würde.Wenn der Treiber also gefunden wird, und dieser tatsächlich für
den SqlServer sein sollte, was in Anbetracht des Klassennamens wohl
nicht so unwahrscheinlich ist, muß der Fehler wohl in der
Connection-URL liegen.
Ich spekuliere einfach mal wild, daß vor den Doppel-Slahes ein
Doppelpunkt fehlt.Aus
jdbc:microsoft:sqlserver//localhost:1433
mach
jdbc:microsoft:sqlserver://localhost:1433Vielleicht war das schon der ganze Fehler.
Danke Slyh, ich glaube genau dieser vergessene ":" war der Fehler :( , tut mir leid für die Frage, aber den habe ich dann wohl irgendwie übersehen. Ja normalerweise fange ich die Exceptions schon konkreter ab, ich wollte in diesem Fall nur mal auf die Schnelle die Connection aufbauen und testen - trotzdem Vielen Dank für den Tip :)
Bekomme zwar noch einen "no trusted user" Error, aber ich denke der lässt sich beheben :)
Mal noch eine zusätzliche Frage: Weisst du evtl. ob es eine Funktion/Methode gibt, die mir alle auf meinem System derzeit verfügbaren Klassen und Methoden anzeigen lassen kann? Ich wollte nämlich vorher mal die Klasse Management importieren um den "Verbose Output" zu aktivieren, jedoch sagt mir der Compiler immer das dieses Package nicht existiert. Wo liegen denn diese Packages genau, und wie kann ich sie nachinstallieren ? Habe zwar JavaSDK 1.4.2 installiert in dem es laut Doku enthalten sein sollte, es wird aber leider nicht gefunden :(
Vielen Dank ,
freundliche Grüsse,
Daniel