2

I'm migrating from Crystal report 2012 to 2020 and connecting crystal report 2020 with an oracle 19c, but when i try to connect my application (using Java) with Crystal Report Java gives me an error. Specifically:

Connection error: The oracle url is not valid

but in the logs I saw that is using the correct url

Connection logon:Database DLL=s(crdb_jdbc.dll);Use JDBC=b(true);Connection URL=s(jdbc:oracle:thin:{userid}/{password}@serverName:1521:dataBaseSID);Database Class Name=s(oracle.jdbc.driver.OracleDriver);Server=s(serverName);Trusted_Connection=b(false);JDBC Connection String=s(!oracle.jdbc.driver.OracleDriver!jdbc:oracle:thin:{userid}/{password}@serverName:1521:dataBaseSID);PreQEServerName=s(jdbc:oracle:thin:{userid}/{password}@serverName:1521:dataBaseSID);database=s();User ID=s(testUserDB);Password=

I tried many url configurations like

jdbc:oracle:thin:{userid}/{password}@//serverName:1521/dataBaseServices

jdbc:oracle:thin:@serverName:1521:dataBaseSID

jdbc:oracle:thin:@//serverName:1521:dataBaseSID

jdbc:oracle:thin:@serverName:1521/dataBaseServices

jdbc:oracle:thin:@//serverName:1521/dataBaseServices

but none of these work, and I don't know what is causing the error. The curious part is that if I try any of those urls with, with crystal report 2020, they work perfectly - but with java I receive the url error.

I also try to change the class name from oracle.jdbc.driver.OracleDriver to oracle.jdbc.OracleDriver but without lucky.

the line that is giving the error is:

reportClientDocument.getDatabaseController().logon("testUserDB", "passwordBD");

the class report client document use this library com.crystaldecisions.reports.sdk.ReportClientDocument; I tried to change that library for com.crystaldecisions.sdk.occa.report.application.ReportClientDocument and I had the same error.

I'm using Spring Tool Suite 4 as IDE that is base on eclipse 4.15.0, JDK 1.8 and ojdbc8 (connector to oracle 19c)

I already downloaded the libraries, features and plugins of Crystal Reports for Eclipse SP27 and installed in my environment and even with that, |I still have the same problem.

Menelaos
  • 23,508
  • 18
  • 90
  • 155

1 Answers1

1

See the following post: Java JDBC - How to connect to Oracle using Service Name instead of SID

The correct format you should use is the following:

jdbc:oracle:thin:@//<host>:<port>/<service>

So, for example:

 jdbc:oracle:thin:scott/tiger@//myhost:1521/myservicename
 jdbc:oracle:thin:userId/Password@//servername:1521/dataBaseService

You could also try the TNS format:

jdbc:oracle:thin:@(description=(address=(host=HOSTNAME)(protocol=tcp)(port=PORT))(connect_data=(service_name=SERVICENAME)(server=SHARED)))
Menelaos
  • 23,508
  • 18
  • 90
  • 155