Kannst du bitte mal den Source Code posten, mit dem du den JDBC Treiber initialisierst.
Es könnte ganz einfach daran liegen.
Diese Art funktioniert afaik:
Driver drv = (Driver) Class.forName("postgresql.Driver").newInstance();
Oft wird der JDBC Treiber in Beispielcode anders initialisiert.
Class.forName("postgresql.Driver");
wenn mich nicht alles täuscht.
Lange kein low level JDBC mehr benutzt.
Jedoch gibt es in einem posgres-Forum eine ähnliche Meldung, die mich überrascht:
http://archives.postgresql.org/pgsql-jdbc/2001-11/msg00225.php
trotzdem nochmal der Sourcecode:
public class ImportSQL extends AgentBase {
private OpenLogItem oli;
private Session session;
private Database db;
private Statement qryStatement;
private Connection con;
public void NotesMain() {
oli = new OpenLogItem();
// oli.logEvent("Starting SQL import", OpenLogItem.SEVERITY_LOW, null);
session = getSession();
try {
AgentContext agentContext = session.getAgentContext();
Agent agent = agentContext.getCurrentAgent();
db = agentContext.getCurrentDatabase();
Document doc = db.getDocumentByID(agent.getParameterDocID());
if (doc != null) {
String dbServer = doc.getItemValueString("DBSERVER");
String dbName = doc.getItemValueString("DBNAME");
String query = doc.getItemValueString("QUERY");
String debug = doc.getItemValueString("DEBUG");
String connectionString = "jdbc:jtds:sqlserver://" + dbServer
+ ":1433/" + dbName;
if (debug.equalsIgnoreCase("true"))
oli.logEvent("Connection string = " + connectionString,
OpenLogItem.SEVERITY_LOW, null);
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con = DriverManager.getConnection(connectionString);
createStatement();
ResultSet rs = getRows(query);
ResultSetMetaData rsmd = rs.getMetaData();
int i, n = rsmd.getColumnCount();
while (rs.next()) {
Document docCur = db.createDocument();
docCur.appendItemValue("Form", "SQLImport");
docCur.appendItemValue("Table", rsmd.getTableName(1));
for (i = 1; i <= n; i++) {
// Attention: first column with 1 instead of 0
docCur.appendItemValue(rsmd.getColumnName(i), rs
.getString(i));
}
docCur.save();
}
con.close();
doc.remove(true);
}
} catch (Exception e) {
oli.logError(e);
} finally {
con = null;
oli.recycle();
try {
session.recycle();
} catch (NotesException e) {
e.printStackTrace();
}
}
}
private void createStatement() {
try {
qryStatement = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
// qryStatement.setFetchSize(100);
} catch (SQLException e) {
oli.logError(e);
}
}
private ResultSet getRows(String sqlStatement) {
ResultSet rs = null;
try {
rs = qryStatement.executeQuery(sqlStatement);
} catch (SQLException e) {
oli.logError(e);
}
return rs;
}
}
Ja, die Error cleaning up agent threads bekomme ich auch oft (hier allerdings nicht ;D)
habs nun doch mit OLEDB gemacht, ist langsamer als mit Java, aber für meine Zwecke auch sehr übersichtlich:
Function getSQL( ) As Boolean
'Liefert True wenn eine Person gefunden wird auf die ein Gerät mit Hostname läuft
'sonst False
On Error Goto ProcessError
Dim RecordSet As Variant
Dim strQry As String
Dim con As Variant
Dim intCount As Integer
Dim lngCount As Long
Dim strTemp As String
Dim arrValues() As String
Dim doc As NotesDocument
Dim strCon As String
Set con=createobject("ADODB.Connection")
strCon = "Provider=SQLOLEDB;" & _
"Data Source=" & DBSERVER & ";" & _
"Initial Catalog=" & DBNAME & ";" & _
"Integrated Security=SSPI"
Call LogEvent(strCon + ": " + QUERY, TYPE_EVENT,Nothing)
con.Open strCon
Set RecordSet = CreateObject("ADODB.Recordset")
RecordSet.Open QUERY,con,2,1
RecordSet.MoveFirst
Do While Not RecordSet.EOF
Set doc = db.CreateDocument
Call doc.AppendItemValue("Form", "SQLImport")
Call doc.AppendItemValue("Table", "PERSON")
Call doc.AppendItemValue("EMPLOYEE_NUMBER", RecordSet.Fields(0).Value)
Call doc.AppendItemValue("FIRST_NAME", RecordSet.Fields(1).Value)
Call doc.AppendItemValue("MIDDLE_NAME", RecordSet.Fields(2).Value)
Call doc.AppendItemValue("LAST_NAME", RecordSet.Fields(3).Value)
Call doc.AppendItemValue("NOTES_MAIL", RecordSet.Fields(4).Value)
Call doc.AppendItemValue("COSTCENTRE", RecordSet.Fields(5).Value)
Call doc.AppendItemValue("CC_NAME", RecordSet.Fields(6).Value)
Call doc.AppendItemValue("LOCATION", RecordSet.Fields(7).Value)
Call doc.AppendItemValue("PHONE", RecordSet.Fields(8).Value)
Call doc.Save(True, False)
RecordSet.MoveNext
Loop
RecordSet.close
con.close
GetSQL = True
Exit Function
ProcessError:
Msgbox LogError()
getSQL = False
Exit Function
End Function