I’m trying to connect to a MS Access database with Ignition 7.8 and have been unsuccessful. All the examples I’ve found have been pre-Java 8 and the elimination of the ODBC-JDBC bridge.
I was able to get this to work. Attached screenshot of the driver setup. Also, need to make sure to include all the dependent .jar files in addition to the ucanaccess jar.
Hi ted_s,
I’m trying to get this to work but not having any luck. Your screenshot of the driver setup is not available any more, could you please repost it?
I’ve tried quite a few combinations of settings, and the Database connection either says “Connecting” forever, or I get this error:
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (UCAExc:::4.0.2 unexpected end of statement)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
at com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.getConnectionInternal(DatasourceImpl.java:224)
at com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.runTest(DatasourceImpl.java:180)
at com.inductiveautomation.ignition.gateway.datasource.DatasourceManagerImpl$FaultedDatasourceRetryer$1.run(DatasourceManagerImpl.java:1037)
at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$TrackedTask.run(BasicExecutionEngine.java:593)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.2 unexpected end of statement
at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:210)
at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
at org.apache.commons.dbcp.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:332)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1249)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221)
… 12 more
Caused by: java.sql.SQLSyntaxErrorException: unexpected end of statement
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeQuery(Unknown Source)
at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:208)
… 16 more
Caused by: org.hsqldb.HsqlException: unexpected end of statement
at org.hsqldb.error.Error.parseError(Unknown Source)
at org.hsqldb.ParserBase.unexpectedToken(Unknown Source)
at org.hsqldb.ParserDQL.XreadSelect(Unknown Source)
at org.hsqldb.ParserDQL.XreadQuerySpecification(Unknown Source)
at org.hsqldb.ParserDQL.XreadSimpleTable(Unknown Source)
at org.hsqldb.ParserDQL.XreadQueryPrimary(Unknown Source)
at org.hsqldb.ParserDQL.XreadQueryTerm(Unknown Source)
at org.hsqldb.ParserDQL.XreadQueryExpressionBody(Unknown Source)
at org.hsqldb.ParserDQL.XreadQueryExpression(Unknown Source)
at org.hsqldb.ParserDQL.compileCursorSpecification(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
… 19 more
Thanks Andrea,
I’ve tried again with the settings in your screenshots but still having no luck. I’ve tried a couple of different database files and I keep getting the same error as in my previous email.
Any other suggestions?
Cheers,
David
Have you insert all the jar files of ucanaccess like the my firts picture?
moreover in my project I have used the version 3.04 of the ucanaccess, maybe this suggestion can help you
I am attempting the exact same setup except my Access Database is on a remote PC.
I am trying to use the following connection URL (jdbc:ucanaccess:////ERICK-PC/VisuaLCN/Data/SVRLATestData.mdb)
As the file is on PC name “ERICK-PC”
And within that PC the file is located at C:\VisuaLCN\Data\SVRLATestData.mdb
I can navigate to this file from any PC; as in it is shared properly.
I have all the jar files and the exact releases (ie ucanaccess-3.0.4 etc)
You may have to set up a mapped drive before you can get this working. This thread covers how to make changes to the ignition.conf file to map a drive that the gateway has access to.
Once you’ve done that you can start trying different paths that use the mapped drive.
I stopped using the mapped drive for our organization and stick to UNC paths for files in our scripts. If you ensure the Ignition Gateway service runs as a domain user (we have a dedicated service account to run Ignition) then your scripting can access any shares that the associated domain account has been granted access to. This approach works well for us because there is no addition changes to the Ignition.conf and new access is done simply by granting the domain account access to the share.
here is the message I get back in the wrapper.log file.
Attempting to map the “\ERICK-PC\VisuaLCN\Data” share to “W:”…
WARN | wrapper | 2017/06/08 15:11:11 | Running a service as System User disqualifies the use of an account. Ignoring wrapper.share..account
WARN | wrapper | 2017/06/08 15:11:46 | Unable to map “W:”. Trying to continue. (The network path was not found. (0x35))
A question I have is, do I need the W drive mapped in windows as well? Currently I do not have W:\ mapped by Windows.
However, in another test I did use a Drive (Y:) that is mapped as windows and I received a similar error although slightly different.
Attempting to map the “\192.168.0.103\Data” share to “Y:”…
WARN | wrapper | 2017/06/08 14:31:34 | Running a service as System User disqualifies the use of an account. Ignoring wrapper.share..account
WARN | wrapper | 2017/06/08 14:31:34 | Unable to map “Y:”. Trying to continue. (The network resource type is not correct. (0x42))
What is ‘running a service as System User’ mean and how do I get around this?
Thanks Andrea, but I was only able to read through your method, but it does not write to the access database, have you found solution to writing to the database yet?
I have download the UCanAccess-4.0.3 rigth now, then i want to installa the UCanAccess like a New JDBC Driver, but i dont find information about this procedure into the manuals, may help me about how to install the UCanAccess and all the related drivers?, Thanks.
Also many thanks Andrea…I was able to get a valid connection using your advice. We’ll see how it goes in the Ignition Designer but I am hopeful that I can display some Access table info.
One thing to note for others who may use this method:
For the default validation query…use SELECT 1 FROM DUAL as shown in the screenshot…do not use SELECT 1 (default)…doesn’t work.