home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.ms-sqlserver      Notorious Rube Goldberg contraption      19,505 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 17,547 of 19,505   
   =?ISO-8859-1?Q?Arne_Vajh=F8j?= to Tom Anderson   
   Re: MS SQL Server, JDBC, and Unicode?   
   10 Jul 09 20:36:47   
   
   XPost: comp.lang.java.programmer   
   From: arne@vajhoej.dk   
      
   Tom Anderson wrote:   
   > Has anyone made SQL Server work with unicode in java?   
   >   
   > I'm working on a system which wants to put unicode in a database. It   
   > does this fine with Oracle, but we haven't been able to make it do so   
   > when the database is SQL Server - and indeed the manufacturers of the   
   > system list this as something that it won't do. Anything that isn't on   
   > the current code page turns into a question mark.   
   >   
   > Our columns are nvarchar, and sendStringParametersAsUnicode is true in   
   > the JDBC URL. Is there more than this we need to do?   
   >   
   > I've come across mention of a syntax which looks like N'this is a   
   > unicode string' for writing unicode literals in SQL. Do i need to do   
   > that? How do i do that if i'm using PreparedStatements?   
   >   
   > We're using the MS driver. An alternative would be the open source jTDS   
   > - any idea if that will fix the problem?   
      
   I can't get it not to work.   
      
   :-)   
      
   The following is tested with the MS driver (driver for 2000   
   against 2000, but I expect 2005 against 2005 to work identical):   
      
   import java.sql.Connection;   
   import java.sql.DriverManager;   
   import java.sql.PreparedStatement;   
   import java.sql.ResultSet;   
   import java.sql.Statement;   
      
   public class Unicode {   
        public static void main(String[] args) throws Exception {   
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");   
   // SQLServer 2000   
            Connection con =   
   DriverManager.getConnection("jdbc:microsoft:sqlserver://localhos   
   DatabaseName=Test",   
   "sa", "");   
            Statement stmt = con.createStatement();   
            stmt.executeUpdate("CREATE TABLE unifun (id INTEGER NOT NULL,   
   data NVARCHAR(50), PRIMARY KEY(id))");   
            stmt.executeUpdate("INSERT INTO unifun VALUES(1,N'ÆØÅæøå the   
   wrong way')");   
            PreparedStatement pstmt = con.prepareStatement("INSERT INTO   
   unifun VALUES(?,?)");   
            pstmt.setInt(1, 2);   
            pstmt.setString(2, "ÆØÅæøå the correct way");   
            pstmt.executeUpdate();   
            ResultSet rs = stmt.executeQuery("SELECT id,data FROM unifun");   
            while(rs.next()) {   
                System.out.println(rs.getInt(1) + " : " + rs.getString(2));   
            }   
            rs.close();   
            stmt.executeUpdate("DROP TABLE unifun");   
            stmt.close();   
            con.close();   
        }   
   }   
      
   Arne   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca