[ 
https://issues.apache.org/jira/browse/DBUTILS-130?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15537311#comment-15537311
 ] 

Michael Osipov commented on DBUTILS-130:
----------------------------------------

Reconstruct the very same example with JDBC first.

> QueryRunner cannot correctly insert unicode characters in Oracle Database. 
> ---------------------------------------------------------------------------
>
>                 Key: DBUTILS-130
>                 URL: https://issues.apache.org/jira/browse/DBUTILS-130
>             Project: Commons DbUtils
>          Issue Type: Bug
>    Affects Versions: 1.5
>            Reporter: Kaleb Akalework
>            Priority: Critical
>
> I have used queryRunner to insert unicode characters succesfully in MSSQL and 
> IBM DB2. I was not able to successfully insert unicode into Oracle. Instead I 
> see the reversed questions mark are inserted, in place of the acutal data. 
> This is the code. The below code works fine If I'm using SQL Server 2016 or 
> IBM DB2 10.5. 
>       
> Here is a sample java code I'm using. The followoing code works perfectly if 
> executed against SQL Server database. 
> to create the table use create table TEST (test NCLOB) 
> package DatabaseTesting;
> import java.sql.DriverManager;
> import java.sql.Connection;
> import java.sql.SQLException;
> import java.util.ArrayList;
> import java.util.List;
> import org.apache.commons.dbutils.QueryRunner;
> public class DatabaseConnection {
>     
>       public enum DatabaseType{
>               Oracle,
>               MSSQLServer,
>               DB2,
>       }
>       
>       private static Connection con;
>     private static String DriverName;
>     private static String JDBCUrl;
>     private static String _username;
>     private static String _password;
>     private static DatabaseType currDatabaseType;
>     
>       public DatabaseConnection(String Driver, String url, String username, 
> String password){
>               
>          con = null;
>          
>          DriverName = Driver;
>          JDBCUrl = url;
>          _username = username;
>          _password = password;
>          String message = "";
>          if (Driver.contains("OracleDriver")){
>                  currDatabaseType = DatabaseType.Oracle;
>                  message = "Connected to Oracle Database";
>          }
>          else if (Driver.contains("SQLServerDriver")){
>                  currDatabaseType = DatabaseType.MSSQLServer;
>                  message = "Connected to MSSQL Database";
>          }
>          else if (Driver.contains("DB2Driver")){
>                  currDatabaseType = DatabaseType.DB2;  
>                  message = "Connected to DB2 Database";
>          }  
>          else{
>                  return;   
>          }
>          
>          try {
>                  con = DriverManager.getConnection(
>                                  JDBCUrl, _username,
>                                       _password);
>                  
>                  System.out.println(message);
>                  
>               } catch (SQLException e) {
>                       System.out.println("Connection Failed! Check output 
> console");
>                       e.printStackTrace();
>                       return;
>               }
>       }
>       
>       public static Object[][] getBulkWriteParams() throws SQLException{ 
>               List<Object[]> listOfParams = new ArrayList<>(); 
>               String s = "こんにちは"; 
>               //for(ContentEntry ce:cacheOfExtractedPages){ 
>               try{ 
>               listOfParams.add(new Object []{s}); 
>               } 
>               catch(Exception e){ 
>               int i= 1; 
>               } 
>               //} 
>               return listOfParams.toArray(new Object[0][0]); 
>               } 
>       public static void TestQueryRunner(){
>               
>               
>                       String s = "こんにちは"; 
>                       String SQL = "insert into TEST VALUES( ?)"; 
>                       try{ 
>                       new QueryRunner(true).batch(con, SQL, 
> getBulkWriteParams()); 
>                       }catch(Exception e){
>                               System.out.println(e.getMessage());
>                       } 
>                       
>       }
>       
>       public static void main(String[] args) {
>               // TODO Auto-generated method stub
>        DatabaseConnection orasun12 = new 
> DatabaseConnection("oracle.jdbc.driver.OracleDriver", 
>                                                               
> "jdbc:oracle:thin:@<your config>",
>                                                               "<your 
> config>", "<your config>");
>        
>      /*  DatabaseConnection DB2 =  new 
> DatabaseConnection("com.ibm.db2.jcc.DB2Driver",
>                                                           "jdbc:db2://<your 
> config>",
>                                                           "<your config>", 
> "<your config>");
>       */         
>        
>        DatabaseConnection MSSQL =  new 
> DatabaseConnection("com.microsoft.sqlserver.jdbc.SQLServerDriver",
>                                                           
> "jdbc:sqlserver://<your config>",
>                                                           "<your config>", 
> "<your config>");
>        MSSQL.TestQueryRunner();
>       }
> }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to