Sunday, 15 May 2011

JDBC and LC_ALL variable

  I was visiting recently one of our customer’s site . Customer complaint about one module which didn’t work for him. Finally I found that the problem is with the following piece of code

PreparedStatement  stmt = _dbConn.prepareStatement(“select decode(attr,‘ATTRIBUTE1’,’COLUMN’,null) from xx_entities”);
 stmt.setString(1, packageName);
 stmt.setInt(2, packageLineNum);
 rs= (ResultSet)stmt.executeQuery();
 StringBuffer result= new StringBuffer();
 while (
        return result.toString();

  The funny part what SQL statement was running just fine from any SQL client and retuned good result, but when running from java the ResultSet object was always empty!! I always got "<parameters></parameters>”

After straggling for several hours, one of my colleagues found the solution. He told me "Hei, check the LC_ALL variable” , and so I did. The value was “ru_RU.cp1251”. As soon as I changed it to “en-US” it worked immediately.

No comments:

Post a Comment