Hallo zusammen,
ich versuche gerade von meinem Dominoserver eine Verbindung zu einem MS SQL 2000 Server herzustellen. Mal kurz zum Istzustand.
Der Dominoserver 6.5.4 FP 2 läuft auf einem Debian Linux Server. Als JVM verwende ich dies:
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1)
Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20031021 (JIT enabled: jitc))
Der Webzugriff funktioniert auch wunderbar.
Um die Verbdindung herzustellen, verwende ich den MS SQL JDBC Treiber von http://www.microsoft.com/downl…47969E66AE&displaylang=en"
Ich habe mir nun mit Eclipse ein kleines Progrämmchen geschrieben:
package sql;
import java.io.*;
import java.sql.*;
public class DbTableShow
{
public static void main( String[] argv )
{
String sDbDrv=null, sDbUrl=null, sTable=null, sUsr="", sPwd="";
sDbDrv = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
sDbUrl = "jdbc:sqlserver://192.168.0.194:1433";
sTable = "Personen";
sUsr = "sa";
sPwd = "whatever;
if( null != sDbDrv && 0 < sDbDrv.length() &&
null != sDbUrl && 0 < sDbUrl.length() &&
null != sTable && 0 < sTable.length() ) {
Connection cn = null;
Statement st = null;
ResultSet rs = null;
try {
// Select fitting database driver and connect:
Class.forName( sDbDrv );
cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
st = cn.createStatement();
rs = st.executeQuery( "select * from Adressen.dbo." + sTable );
// Get meta data:
ResultSetMetaData rsmd = rs.getMetaData();
int i, n = rsmd.getColumnCount();
// Print table content:
for( i=0; i<n; i++ )
System.out.print( "+---------------" );
System.out.println( "+" );
for( i=1; i<=n; i++ ) // Attention: first column with 1 instead of 0
System.out.print( "| " + extendStringTo14( rsmd.getColumnName( i ) ) );
System.out.println( "|" );
for( i=0; i<n; i++ )
System.out.print( "+---------------" );
System.out.println( "+" );
while( rs.next() ) {
for( i=1; i<=n; i++ ) // Attention: first column with 1 instead of 0
System.out.print( "| " + extendStringTo14( rs.getString( i ) ) );
System.out.println( "|" );
}
for( i=0; i<n; i++ )
System.out.print( "+---------------" );
System.out.println( "+" );
} catch( Exception ex ) {
System.out.println( ex );
} finally {
try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
try { if( null != st ) st.close(); } catch( Exception ex ) {}
try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
}
}
}
// Extend String to length of 14 characters
private static final String extendStringTo14( String s )
{
if( null == s ) s = "";
final String sFillStrWithWantLen = " ";
final int iWantLen = sFillStrWithWantLen.length();
final int iActLen = s.length();
if( iActLen < iWantLen )
return (s + sFillStrWithWantLen).substring( 0, iWantLen );
if( iActLen > 2 * iWantLen )
return s.substring( 0, 2 * iWantLen );
return s;
}
}
Das läuft von meinem Client auch wunderbar durch. Da sollte es doch eigentlich auch vom Dominoserver in einem Agent möglich sein, auf den SQL-Server zuzugreifen.
Also fluchs eine DB erstellt, ein Agent mit imported Java und die leicht modifizierte Klasse importiert. Wenn der Agent aber nun losrennt, kommt folgende Meldung auf dem Dominoserver:
11.02.2006 16:32:48 AMgr: Agent ('SQL' in 'SQL-DB.nsf') error message: java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/Util
11.02.2006 16:32:48 AMgr: Agent ('SQL' in 'SQL-DB.nsf') error message: at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
11.02.2006 16:32:48 AMgr: Agent ('SQL' in 'SQL-DB.nsf') error message: at java.sql.DriverManager.getConnection(DriverManager.java:543)
11.02.2006 16:32:48 AMgr: Agent ('SQL' in 'SQL-DB.nsf') error message: at java.sql.DriverManager.getConnection(DriverManager.java:194)
11.02.2006 16:32:48 AMgr: Agent ('SQL' in 'SQL-DB.nsf') error message: at com.ibm.sqlnotes.ConnectSQL.NotesMain(ConnectSQL.java:70)
11.02.2006 16:32:48 AMgr: Agent ('SQL' in 'SQL-DB.nsf') error message: at lotus.domino.AgentBase.runNotes(Unknown Source)
11.02.2006 16:32:48 AMgr: Agent ('SQL' in 'SQL-DB.nsf') error message: at lotus.domino.NotesThread.run(NotesThread.java:218)
Hat jemand eine Idee, an was das liegen kann?
Ach so. Den SQL-JDBC Treiber habe ich so eingebunden:
Im Verzeichnis domino des notesdatenverzeichnis ein Verzeichnis lib erstellt, dort die sqljdbc.jar abgelegt und in die notes.ini den Eintrag JavaUserClasses=/home/notes/notesdata/domino/lib/sqljdbc.jar eingetragen und den Dominoserver neu gestartet.
cu