JAVA Packages für JDBC Verbindung auf MS SQL Server

  • Hey @All


    Möchte eine Datenbank-Verbindung über JDBC von Notes auf eine MS SQL DB realisieren.
    Bin leider noch JAVA Anfänger und taste mich langsam an die Sache ran...


    Ich habe ein Package installiert, das hat mir einige *.jar Files gegeben, welche ich im lib Verzeichnis liegen habe.
    Ich habe auch die Variabeln PATH= und CLASSPATH= gesetzt.


    Trotz all dem bringt er mir beim Kompilieren immer die Fehlermeldung, dass das Package nit existiert:


    Script:
    DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
    Connection connection = DriverManager.getConnection("jdbc:microsoft:sqlserver://server:port","user","pw");


    Fehlermeldung:
    package com.microsoft.jdbc.sqlserver does not exist



    Was muss ich noch machen?


    Gruss, dave

  • Entweder musst du das Package mit in deinem Agenten hineinkompilieren. Dafür gibt es bei Java Agenten unten einen Knopf Edit Project über den du dann Jar-Files importieren kannst


    Oder du bindest sie am Server direkt ein, indem du in der Notes.ini einen Eintrag JavaUserClasses erstellst, der auf dein Jar File verweist. (Mehrere Einträge kannst du per Komma trennen)

  • Das Kompilieren funktioniert jetzt, nun erscheint mir im debuger der Fehler:


    Error loading Agent Base Class



    Hier der connect, der nun funktioniert:
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    String url = "jdbc:microsoft:sqlserver://server:port";
    Connection connection = DriverManager.getConnection(url, "user", "pw");

  • So sieht mein Script aus, mehr habe ich nicht....
    und was muss ich wo rein schreiben??


    import java.*;
    import java.sql.*;


    /**
    * Microsoft SQL Server JDBC test program
    */
    public class Test {
    public Test() throws Exception {
    // Get connection
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    String url = "jdbc:microsoft:sqlserver://server:port";
    Connection connection = DriverManager.getConnection(url, "user", "pw");


    if (connection != null) {
    System.out.println();
    System.out.println("Successfully connected");
    System.out.println();
    // Meta data
    DatabaseMetaData meta = connection.getMetaData();
    System.out.println("\nDriver Information");
    System.out.println("Driver Name: " + meta.getDriverName());
    System.out.println("Driver Version: " + meta.getDriverVersion());
    System.out.println("\nDatabase Information ");
    System.out.println("Database Name: " + meta.getDatabaseProductName());
    System.out.println("Database Version: " + meta.getDatabaseProductVersion());
    }
    } // Test
    public static void main (String args[ ]) throws Exception {
    Test test = new Test();
    }
    }

  • Erzeuge doch noch mal einen neuen Java Agenten und schreib dann deinen Code in das dort schon vorhandene Klassengerüst hinein.


    Notes benötigt bei einem JavaAgenten immer eine von AgentBase abgeleitete Klasse mit der Main-Methode NotesMain

  • Ok, das schanllt er jetzt.
    Nun der folgende Fehler.... (Classpath habe ich gesetzt)


    java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
    at lotus.domino.AgentLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:448)
    at java.lang.Class.forName1(Native Method)
    at java.lang.Class.forName(Class.java:142)
    at JavaAgent.NotesMain(JavaAgent.java:13)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(NotesThread.java:215)

  • Hi,


    wenn ich mich hier mal einmischen darf, denn ich stand vor kurzem vor dem gleichen Problem. =:)


    Du hast die JARs auf dem Server im Lib Verzeichnis? Und dann den Eintrag JavaUserClasses=......?


    Ich gehe momentan her und lasse die Sachen weg und stelle die JARs explizit im Agent zur Verfügung. Okay, wenn ich dann mehrere Agenten habe, die die gleichen JARs brauchen, liegen die zwar doppelt vor. Aber der INI-Eintrag ist auf glaube ich 256 Zeichen beschränkt. Und wenn man dann die 3 MS-JArs einbindet, kommt man da schnell an die Grenzen.


    Versuch doch mal die JARs in den Agent zu integieren.


    cu

  • Klar darfst Du dich da einmischen, das ist ja ein öffentliches Forum;-)


    Ok, wäre auch für mich nicht so schlecht, dann muss ich nicht weiter an den Envoirments und den INIs vom Server herum basteln.
    somit auch deine Frage beantwortet, ja...ich habe alle Eintrage gemacht.


    Hmm, und wie muss ich die im Notes-Agent einbinden??

  • Zitat

    Klar darfst Du dich da einmischen, das ist ja ein öffentliches Forum


    Hi, hi. War ja nur eine rhetorische Bemerkung. ;)


    Schau mal in Deinen Agent. Da gibts unten einen schönen Button "Edit Project". Dann kannst Du die JARs auswählen und hinzufügen.

  • Ok, da scheint sich wieder was zu tun.


    Nun erhalte ich die Fehlermeldung:


    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Fehler beim einrichten eines Sockets.



    Ich habe eine ODBC Verbindung zum SQL Server, die funktioniert einwandfrei.

  • Wie soll den das gehen? Notes User =! Windows User


    Der Agent habe ich mit einem NotesUser signeirt, der die Ausführung auf NotesEbene erlaubt.
    Angemeldet am Windows bin ich mit einem Admin, mit dem ich auf ziemlich alles Zugriff habe.

  • Wäre noch etwas zum ausprbieren.
    Mach ich nächste Woche, da ich zur Zeit kein JAVA-Tool auf der Maschine habe und die Softwareverteilungs-Fritzen bereits im Weekend sind.


    Ich habe noch eine Info, die vielleicht von Nützen ist:
    Auf dem SQL Server laufen mehrere Instanzen und das Port wird dynamisch generiert.....ist das das Problem?


    gruss

  • Es geht....der dynamische Port ist das Problem.
    Jetzt habe ich den gerade aktuellen Port erwischt, mit dem funktionierts jetzt;-)


    Hmmm, nur kann ich da ja nicht immer vor dem Start des Agenten den aktuellen Port ausfindig machen und den reinschreibe....gibts für das auch eine Lösung??


    Danke alle und gruss