Setting the Locale for JDBC Sessions
You set the locale for a connection while opening it by including a SET LOCALE statement in the ConnSettings property, or by executing a SET LOCALE statement at any time after opening the connection. Changing the locale of a Connection
object affects all of the Statement
objects you instantiated using it.
You can get the locale by executing a SHOW LOCALE query. The following example demonstrates setting the locale using ConnSettings and executing a statement, as well as getting the locale:
import java.sql.*; import java.util.Properties; public class GetAndSetLocale { public static void main(String[] args) { // If running under a Java 5 JVM, you need to load the JDBC driver // using Class.forname here Properties myProp = new Properties(); myProp.put("user", "ExampleUser"); myProp.put("password", "password123"); // Set Locale to true en_GB on connection. After the connection // is established, the JDBC driver runs the statements in the // ConnSettings property. myProp.put("ConnSettings", "SET LOCALE TO en_GB"); Connection conn; try { conn = DriverManager.getConnection( "jdbc:vertica://VerticaHost:5433/ExampleDB", myProp); // Execute a query to get the locale. The results should // show "en_GB" as the locale, since it was set by the // conn settings property. Statement stmt = conn.createStatement(); ResultSet rs = null; rs = stmt.executeQuery("SHOW LOCALE"); System.out.print("Query reports that Locale is set to: "); while (rs.next()) { System.out.println(rs.getString(2).trim()); } // Now execute a query to set locale. stmt.execute("SET LOCALE TO en_US"); // Run query again to get locale. rs = stmt.executeQuery("SHOW LOCALE"); System.out.print("Query now reports that Locale is set to: "); while (rs.next()) { System.out.println(rs.getString(2).trim()); } // Clean up conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
Running the above example displays the following on the system console:
Query reports that Locale is set to: en_GB (LEN)
Query now reports that Locale is set to: en_US (LEN)
Notes:
- JDBC applications use a UTF-16 character set encoding and are responsible for converting any non-UTF-16 encoded data to UTF-16. Failing to convert the data can result in errors or the data being stored incorrectly.
- The JDBC driver converts UTF-16 data to UTF-8 when passing to the Vertica server and converts data sent by Vertica server from UTF-8 to UTF-16 .