java - jdbc:odbc - wmi
BFJoe 24.02.2002 - 22:30 1094 10
BFJoe
Bloody Newbie
|
das Programm in der Anlage geht mit Javaversionen <= 1.2.2 und versagt mit Javaversionen >= 1.3.0;
das Problem tritt beim Erstellen des Statement-Objektes auf - "Resultset Type wird nicht unterstützt". Der WMI-ODBC-Treiber bietet ein ReadOnly | ForwardOnly Resultset an. Der Fehler kommt auch, wenn man diese beiden Optionen bei der Funktion CreateStatment angibt.
Zum Ausprobieren braucht man natürlich den ODBC Treiber und WMI. WMI ist ab win2k beim System dabei, der ODBC-Treiber ist auf der win2k-CD unter valueAdd. Bei den anderen Wins kann man WMI gratis bei Microsoft laden.
Wer sich damit auskennt und mir weiterhelfen kann ist ... einfach Ultrakompetent.
|
OcPapst
Little Overclocker
|
Hmm, also bei mir funktioniert schon, habe aber schnell ein paar Sachen geändert (DB-URL, Properties gelöscht- zuwas brauchst den die??) andere DB,... Bekommst du eine SQL-Exception oder was ?? Poste bitte ein wenig mehr Infos was bei die nicht funktioniert, bekommst du ünerhaupt eine Connection zur DB ?? Sieht nach ein Treiberproblem aus - ODBC Treiber nicht SQL3 konform oder so...der Code ist in Ordnung - ich Verwende JDK1.3.1_01 und Beta1.4 bei beiden hats funktioniert...... brauche mehr Input - Screenshot der Exception zB......
lg, da OcPapst
|
BFJoe
Bloody Newbie
|
die properties sind umsonst, da hast Du recht. Sie stören aber auch nicht, ich hab mal was damit ausprobiert und habs nachher nicht mehr rausgelöscht. Auf anderen Datenbanken gehts natürlich, macht aber keinen Sinn, weil ich dort keine WMI-Infos auslesen kann. Ich brauche eben den WMI-ODBC Treiber um auf die WMI-Datenbank zuzugreiffen. Es kann sein, daß der ODBC-Treiber nicht alle Voraussetzungen erfüllt (ist sozusagen ein Minimaltreiber). Aber warum geht er dann mit Javaversionen <= 1.2.2? Die Connection kann ich übrigens fehlerfrei öffnen, Probleme kommen erst beim Aufruf "CreateStatement". Die Programmausgabe (noch zusätzlich ein printStackTrace() eingefügt): Connected to jdbc dbc:WBEM Source;DBQ=root\cimv2;SERVER=;UIDPWDDEFINED=;UID=;PWD=;SYSPROPS=FALSE;NAMESPACES={root\cimv2,deep} Driver JDBC-ODBC Bridge (WBEMDR32.DLL) Version 2.0001 (01.00.0000) java.sql.SQLException: The result set type is not supported. at sun.jdbc.odbc.JdbcOdbcStatement.initialize(JdbcOdbcStatement.java:153 ) at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.j ava:417) at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.j ava:391) at SimpleSelect.main(SimpleSelect.java:54) *** SQLException caught *** SQLState: null Message: The result set type is not supported. Vendor: 0
Bearbeitet von BFJoe am 25.02.2002, 13:28
|
OcPapst
Little Overclocker
|
Hmm, habs auf eine WMI-DB, ODBC und MS-SQL2000 checkt, funktioniert bei allen einwandfrei...am JDK kanns aber eigentlich auch nicht liegen, die haben seit dem 1.2.2 bis 1.3.1 nix gravierendes verändert, wird an deinen WMI Einstellungen etwas nicht ganz passen - check die mal ev. neuen Treiber runterladen...sehr merkwürdig, wennst willst kann ich das mal durch den Compiler lassen - die DB-Url usw. sind eh gleich wie das Bsp-File oder ?? lg, da OcPapst btw. die Properties sind mir auch egal,.... Unter nix gravierendes verändert meine ich das Paket sql...da hat sich seit 1.2.2 nix getan...außer java.sql.SQLPermission sonst aba nix
Bearbeitet von OcPapst am 25.02.2002, 13:46
|
OcPapst
Little Overclocker
|
Hmm, schaut a bisl komisch aus weil in Zeile 54 hast ka ResultSet sondern a Statement,.....hmm.....muss mal was probieren...glaub i was wos hot....
bis dann da OcPapst
|
OcPapst
Little Overclocker
|
Ändere dein Statement in
Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
compilieren und checken obs funkt.
da OcPapst
Bei mir gehts mit beiden Möglichkeiten.....
Bearbeitet von OcPapst am 25.02.2002, 14:03
|
BFJoe
Bloody Newbie
|
wie kannst du eine WMI-Datenbank mit MSSQL2000 verwenden?
Ich verbinde mich direkt auf die WMI-Datenbank des Betriebssystems mittels WMI-ODBC. Dafür braucht ich den MSSQL Server gar nicht.
Leider gehts CreateStatement auch mit den Optionen nicht.
WMI-ODBC-Treiber gibts leider keine neueren (2.10 ist aktuell). In Visual C++ und MS Access kann man einwandfrei auf diesen ODBC-Treiber zugreifen (in VC++ geht halt kein MoveFirst, weil ForwardOnly gilt).
Bearbeitet von BFJoe am 26.02.2002, 12:31
|
OcPapst
Little Overclocker
|
I hab nicht geschrieben das ich eine WMI-DB mit MS SQL2000 verwende, sondern das ich deinen Code auf verschiedenen DB-Systemen getestet habe ob er funktioniert....logo is WMI ein eigenes Windoof Format .....
.....da OcPapst
|
BFJoe
Bloody Newbie
|
aso, und bei Dir geht der Code mit Java 1.3.1???
|
OcPapst
Little Overclocker
|
Jo geht, was fürn JDK nimmst du ??? Und außerdem wenns im 1.2.2 funktioniert dann is a ok, wennst das verwenden willst is eh binär-kompatibel mit da 1.3er....... Sonst check mal die Beta1.4er.....
cu da OcPapst
|
BFJoe
Bloody Newbie
|
komisch, bei mir geht's einfach mit der 1.3.0 EE, 1.3.1 SE und der 1.4.0 SE nicht. Habs auf 3 Rechnern ausprobiert, überall das gleiche Problem mit dem CreateStatement.
Bearbeitet von BFJoe am 26.02.2002, 15:35
|