public javax.sql.RowSet ExecSQL(String DataSource, String SQLtext)
throws com.sun.star.uno.Exception, java.lang.Exception{
xMCF = xContext.getServiceManager();
Object rowSet = xMCF.createInstanceWithContext("com.sun.star.sdb.RowSet", xContext);
com.sun.star.sdbc.XRowSet xRowSet = (com.sun.star.sdbc.XRowSet)
UnoRuntime.queryInterface(com.sun.star.sdbc.XRowSet.class, rowSet);
XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xRowSet);
xProp.setPropertyValue("DataSourceName", DataSource);
xProp.setPropertyValue("CommandType", new Integer(com.sun.star.sdb.CommandType.COMMAND));
xProp.setPropertyValue("Command",SQLtext);
xProp.setPropertyValue("User", "loginname");
xProp.setPropertyValue("Password", "pass");
xRowSet.execute();
return (javax.sql.RowSet)rowSet;
}
тип обьекта $Proxy и его каст в нормальный обьект
Пишу приложение - екстеншн для опенофиса. Имеется функция, которая выполняет sql запрос в контексте опенофиса, и которая должна возвращать RowSet.
Код:
Данный код компилится , но при выполнении выбрасывает исключение java.lang.ClassCastException: $Proxy0 в строке return (javax.sql.RowSet)rowSet;
Понятно, что несовместимые классы. Посмотрел в дебагере - объект rowSet имеет тип $Proxy0. И как его привести к javax.sql.RowSet (по сути это же одно и тоже) - совершенно непонятно.
Можеть хто из вас сталкивался с этой проблемой, подскажите плиз!