dhtmlxConnector_java connecting to firebird using JayBird

Hi,

I’m trying to connect dhtmlXGridObject to Firebird database via dhtmlxConnector java connector. I use JDBC driver JayBird 2.2.3 like this:

protected void configure() {
        //obtain DB connection
		Connection conn=null;
		try {
			Class.forName ("org.firebirdsql.jdbc.FBDriver").newInstance ();
			conn = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050/DRZEWO", "SYSDBA", "masterkey");
		} catch (Throwable e) {
			e.printStackTrace();
		}

	    //Initialize connector
		GridConnector c = new GridConnector(conn);
	          //configure used table and fields
		c.render_table("OBJECTS", "ID", "NAME,PARENT,ORDER_INDEX");
		//c.enable_log("e:\\Eclipse\\workspace\\Tomcat 7.x\\connecnion.log", true);
	}

but i get exception and have no idea whats wrong.

SELECT ID,NAME,PARENT,ORDER_INDEX FROM OBJECTS
com.dhtmlx.connector.ConnectorOperationException: Invalid SQL: SELECT ID,NAME,PARENT,ORDER_INDEX FROM OBJECTS
Not yet implemented.
	at com.dhtmlx.connector.DBDataWrapper.query(DBDataWrapper.java:374)
	at com.dhtmlx.connector.DBDataWrapper.select(DBDataWrapper.java:214)
	at com.dhtmlx.connector.BaseConnector.get_resource(BaseConnector.java:447)
	at com.dhtmlx.connector.BaseConnector.render(BaseConnector.java:427)
	at com.dhtmlx.connector.BaseConnector.render_table(BaseConnector.java:242)
	at com.dhtmlx.connector.BaseConnector.render_table(BaseConnector.java:210)
	at macma.technicon.com.pl.BasicConnector.configure(BasicConnector.java:47)
	at com.dhtmlx.connector.ConnectorServlet.doGet(ConnectorServlet.java:29)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

I’m new to DHTMLX so any help appreciated.
Best Regards,
Macma

Try to run the same query directly against the database
“SELECT ID,NAME,PARENT,ORDER_INDEX FROM OBJECTS”
Does it work or not?

Also you can check javaplanner.com - it is java wrapper for the scheduler which can be integrated with datasets without connectors ( through Hibernate for example )

I found the reason of a problem. Please see this piece of code from “DBDataWrapper.java”:

   /**
    * Gets the statement
    * 
    * @return the statement
    * 
    * @throws SQLException the SQL exception
    */
   protected Statement getStatement() throws SQLException{
      Connection conn = this.get_connection();
      return this.get_connection().createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
   }
   
   /**
    * Executes DB query.
    * 
    * @param data the data
    * 
    * @return the connector result set
    * 
    * @throws ConnectorOperationException the connector operation exception
    */
   public ConnectorResultSet query(String data)throws ConnectorOperationException{
      LogManager.getInstance().log("DB query \n"+data+"\n\n");
      try {
         Statement s = getStatement();    
         s.execute(data);
         
         ResultSet r = s.getResultSet();
         if (r!=null)
            if (!r.first()){
               r.close();
               r=null;
            }
         
         return new ConnectorResultSet(r);
      }
      catch (SQLException e){
         throw new ConnectorOperationException("Invalid SQL: "+data+"\n"+e.getMessage());
      }
   }   
}

They using unidirectional cursor TYPE_FORWARD_ONLY but try to move cursor by “r.first()” which is not allowed, at least for JayBird driver. I wonder if it’s allowed in JDBC specification. I can use r.next() or change ResultSet type to TYPE_SCROLL_INSENSITIVE but I’m not a fan of messing in someone else code.

Best Regards,
Macma