I have problems executing a Java program. It’s running OK in my local environment but I get this error running the jar from a Linux Red Hat 64-bit server:
java.sql.SQLException: ORA-01722: invalid number
I run the same jar in another Linux Red Hat 32-bit server and it’s OK. The program is connecting to a database in another server. I tried to execute the jar in several JVM (Sun and jRockit) and several versions in both environments, and I keep getting the exception in the Linux Red Hat 64-bitserver. It’s running OK with both JVM in local and in Linux Red Hat 32-bit server.
1) My PC is a Win XP (x86) and I run the program with Eclipse.
2) Linux Server with Exception: redhat-4 (x64)
3) Linux Server OK: Red Hat Enterprise Linux AS release 4 (Nahant Update 5) (x86)
As you didn't post the actual code, it is really hard to say, but my bet is: you're using a simple Statement with literal values, instead of PreparedStatement and bind variables. The national language settings is different on Linux and the numeric format of literal is not valid there. Your code is therefore subject to SQL injection attacks and implicit conversion bugs.
Again, this is only a guess since you didn't provide the code, but this is the most probable cause. If this doesn't help, use the stack trace to locate statement being executed and show us that code.
There are many reasons responsible for ORA-01722: invalid number, in order to fix this problem, you have to compare the numeric column along with the character column, while doing this it ensures that in the table the format mask would fit in all possible character strings. Make sure that the rows are executed with the Where clause, and if you are unsure that both the character strings and valid numbers are within the column, then just “Select*From Table” and you got the error then set proper locate in your “exeSQL” method to fix the error. Or else you can fix the error using a third party software, Oracle File Repair Tool, to fix the errors of related to Oracle database easily.
The human mind is a dangerous plaything. This tiny ad is pretty safe:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop