dark-lost-soul Geschrieben 5. September 2007 Geschrieben 5. September 2007 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 Zitieren
Jaraz Geschrieben 5. September 2007 Geschrieben 5. September 2007 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 Zitieren
dark-lost-soul Geschrieben 5. September 2007 Autor Geschrieben 5. September 2007 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 Zitieren
P3AC3MAK3R Geschrieben 5. September 2007 Geschrieben 5. September 2007 Folgende Codeausschnitte könnten auch weiterhelfen: http://www.exampledepot.com/egs/java.sql/ConnectSqlServer.html http://www.exampledepot.com/egs/java.sql/SetupJdbc.html http://www.exampledepot.com/egs/java.sql/LoadDrivers.html?l=rel Zitieren
dark-lost-soul Geschrieben 5. September 2007 Autor Geschrieben 5. September 2007 @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. Zitieren
P3AC3MAK3R Geschrieben 5. September 2007 Geschrieben 5. September 2007 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 Zitieren
dark-lost-soul Geschrieben 5. September 2007 Autor Geschrieben 5. September 2007 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 Zitieren
dark-lost-soul Geschrieben 5. September 2007 Autor Geschrieben 5. September 2007 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; Zitieren
kingofbrain Geschrieben 5. September 2007 Geschrieben 5. September 2007 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 Zitieren
dark-lost-soul Geschrieben 5. September 2007 Autor Geschrieben 5. September 2007 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 Zitieren
dark-lost-soul Geschrieben 5. September 2007 Autor Geschrieben 5. September 2007 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 Zitieren
dark-lost-soul Geschrieben 6. September 2007 Autor Geschrieben 6. September 2007 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 Zitieren
P3AC3MAK3R Geschrieben 6. September 2007 Geschrieben 6. September 2007 Mache bitte beim nächsten Mal für ein neues Problem einen neuen Thread auf - hält das Forum übersichtlicher. java jtable resultset - Google-Suche liefert z. B. das folgende How-to: Transfer a ResultSet to a JTable - Real's Java How-to Zitieren
dark-lost-soul Geschrieben 6. September 2007 Autor Geschrieben 6. September 2007 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 Zitieren
P3AC3MAK3R Geschrieben 6. September 2007 Geschrieben 6. September 2007 Die Klasse ResultSetMetaData sollte Dir da weiterhelfen (Methoden getColumnCount und getColumnName): http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSetMetaData.html Zitieren
dark-lost-soul Geschrieben 6. September 2007 Autor Geschrieben 6. September 2007 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 Zitieren
Empfohlene Beiträge
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.