2012-08-13 5 views
3

J'exécute suivant la requête SQL dans SQL Server 2008 en utilisant l'API jTDS:Conversion nvarchar (max) type de données à chaîne en Java

SELECT a , b , c FROM [db].[dbo].[table] where d = 1; 

et le type de données pour ces trois domaines sont les suivants:

a -- nvarchar(255) 
b -- nvarchar(255) 
c -- nvarchar(max) 

Lorsque j'exécute la requête en utilisant Java, les valeurs de chaîne pour a et b sont le texte brut, mais pour c Je reçois la valeur suivante:

[email protected] 

Il semble qu'il est stocké en tant qu'objet, comment puis-je le convertir en chaîne normale?

+0

Quel est le type en Java? DBVT_STRING? DBVT_ASTRING? Autre chose? –

+1

Lorsque vous obtenez les valeurs de 'ResultSet', je suppose que vous avez déjà essayé' getString (colonne) 'et' getCharacterStream (colonne) '? –

+0

oui essayé, toujours le même – Pradeep

Répondre

5

J'ai essayé le lien envoyé par @Roberto Navaron, il a travaillé, tout objet passé à cette méthode, le type jeté à clob et il retourne la chaîne

private String clobToString(Clob data) { 
    StringBuilder sb = new StringBuilder(); 
    try { 
     Reader reader = data.getCharacterStream(); 
     BufferedReader br = new BufferedReader(reader); 

     String line; 
     while(null != (line = br.readLine())) { 
      sb.append(line); 
     } 
     br.close(); 
    } catch (SQLException e) { 
     // handle this exception 
    } catch (IOException e) { 
     // handle this exception 
    } 
    return sb.toString(); 
} 
Questions connexes