0 Replies Latest reply on Apr 24, 2013 7:53 AM by DavePijuan-Nomura

    JDBC getColumns() failing sporadically

    DavePijuan-Nomura

      Title

      JDBC getColumns() failing sporadically

      Your post

           I'm trying to get a table schema using the getColumns() function, and sometimes it works, but sometimes it returns an empty result set, and occasionally, it raises a "Java::ComFilemakerJdbc::FMSQLException: [FileMaker][FileMaker JDBC] Invalid name in metadata query." exception. I'm using driver version 12.3.103 via jRuby.

           The code is jRuby, but it maps pretty well to Java:

            

           require 'java'
           require "fmjdbc.jar"
           java_import 'com.filemaker.jdbc.Driver'
           @host = config['host']
           @username = config['username']
           @password = config['password']
           @database = config['source']
           @connection ||= JavaSql::DriverManager.getConnection("jdbc:filemaker://#{@host}/#{@database}?user=#{@username}&password=#{@password}")
           s = @connection.createStatement()
           rs = s.getColumns(nil,'contacts')
           metadata = rs.getMetaData()
           ncols = metadata.getColumnCount()
           schema_keys = (1..ncols).collect{ |i| metadata.getColumnName(i) }
           rows = []
           while rs.next
             rows << (1..ncols).inject({}){ |a, i| a[schema_keys[i - 1]] = rs.getString(i);a}
           end
           s.close()
            
           I found no documentation for the getColumns() function, and have no idea what the first parameter does. If anyone can shed some light on this problem, it would be immensely appreciated.
            
           Dave