Other Problems with jDBC2 and some queries with to_char

cheveguerra

Member
Licensed User
Longtime User
Hi everybody,

I am trying to migrate from jRDC1 to jRDC2, we have been using version 1 because all of our apps use that version, but since version 2 has been out for a LONG time, I am testing version 2 to see what changes are needed, but also to see if our current code can coexist with version 2 of the server and then, the new apps maybe use version 2.

So, after downloading the version 2 of the server from here, and opening it in B4J, I proceeded to uncomment the 3 blocks that deal with VERSION1, and ran the project.

I only needed to add “/rdc” to the rdcLink in the test app (version 1 of the DBRequestManager class) and everything “seems” to work fine … but for a few details:
  • If I call (by mistake) a query that does not exist in the config.properties file, in version 1, I get a 1 line “Query missing” error in the log, but in version 2, I get a 500 error with a lot of HTML text that says “Invalid SQL sentence” … Would it be possible to get only the one line “Query missing” message?.
  • I was testing all the queries, and in version 1, I can call a query with the SQL statement “SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') AS FECHA FROM DUAL”, and there's no problem, BUT with version 2, the same query throws a “(SQLException) java.sql.SQLException: invalid column index” error, and does not return the result of the query. It is weird, because in the Oracle SQL Developer the query runs correctly, in version 1, it also runs fine, but in version 2, it throws that error!
  • I "think" it is the "to_char" function, because another query that throws the same error also uses that function, but I have another 3 queries that also use to_char and have no issues :rolleyes:, so now I am not so sure! :confused:
  • I tried the same queries with version 2 of the DBRequestManager class, and I get the same error.
So, if anyone have had the same issues and was able to resolve them, please help me!! 😅

Here is the log for the error:

B4X:
java.sql.SQLException: Ãndice de columna no válido
    at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5168)
    at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:8098)
    at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8034)
    at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8767)
    at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:8748)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:230)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setObject(NewProxyPreparedStatement.java:878)
    at anywheresoftware.b4j.objects.SQL.ExecQuery2(SQL.java:368)
    at b4j.example.rdchandler._executequery(rdchandler.java:626)
    at b4j.example.rdchandler._handle(rdchandler.java:948)
    at jdk.internal.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:629)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:237)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at jdk.internal.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:629)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:237)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at jdk.internal.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:111)
    at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:100)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:98)
    at anywheresoftware.b4j.object.JServlet$Handle.run(JServlet.java:146)
    at anywheresoftware.b4a.keywords.SimpleMessageLoop.runMessageLoop(SimpleMessageLoop.java:47)
    at anywheresoftware.b4a.StandardBA.startMessageLoop(StandardBA.java:43)
    at anywheresoftware.b4a.shell.ShellBA.startMessageLoop(ShellBA.java:121)
    at anywheresoftware.b4a.keywords.Common.StartMessageLoop(Common.java:180)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:309)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:111)
    at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:100)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:98)
    at b4j.example.main.main(Main.java:29)

Best regards
 
Last edited:

Erel

B4X founder
Staff member
Licensed User
Longtime User
If I call (by mistake) a query that does not exist in the config.properties file, in version 1, I get a 1 line “Query missing” error in the log, but in version 2, I get a 500 error with a lot of HTML text that says “Invalid SQL sentence” … Would it be possible to get only the one line “Query missing” message?.
Ignore it. You shouldn't call missing queries.

About the actual error - are you using the same jdbc driver as you used with jrdc 1 ?
What is "lido"?
The error happens inside the jdbc driver. I guess that something is wrong in your query.
 
Upvote 0
Top