1
由於我使用JRC的更新版本,數據庫連接信息的替換不再起作用。我不知道爲什麼。此代碼從去年秋天JRC版本工作(不幸的是我沒有一個版本號):用JRC替換子報表的數據庫連接
ReportClientDocument doc = new ReportClientDocument();
doc.open("report.rpt");
IDatabase db = null; // get sub report database
// we'll overwrite the database connection information within
// the chosen report.
Map<String, String> bag = new HashMap<String, String>();
bag.put("Connection URL", "jdbc:oracle:thin:@LOCALHOST:1521:DATABASENAME");
bag.put("Server Type", "JDBC (JNDI)");
bag.put("Database DLL", "crdb_jdbc.dll");
bag.put("Database Class Name", "oracle.jdbc.driver.OracleDriver");
for (Object table : db.getTables()) {
updateTable(dhb, dc, (ITable)table, bag);
}
...
private void updateTable(DatabaseController dc, ITable table,
Map<String, String> bag) throws ReportSDKException {
ITable t = (ITable)table.clone(true);
LOGGER.debug(t.getName());
LOGGER.debug("1: " + t.getConnectionInfo().getAttributes());
IConnectionInfo connInfo = t.getConnectionInfo();
connInfo.setUserName("UserX");
connInfo.setPassword("xxxxx");
connInfo.setAttributes(new PropertyBag(bag));
// LOGGER.debug("ConnInfo Kind: " + connInfo.getKind());
t.setConnectionInfo(connInfo);
// t.setName(((ITable)table).getName());
t.setQualifiedName("UserX" + "." + table.getName());
dc.setTableLocation(table, t);
LOGGER.debug("2: " + t.getConnectionInfo().getAttributes());
}
我得到這個錯誤:「Fehler北德Suche NACH JNDI-Namen(UserY)'。這意味着JRC無法找到給定的JNDI名稱。
有沒有人知道這些JRC版本之間的一些變化?有誰知道一個解決方案?