2014-04-22 26 views
7

Ich frage mich, was mache ich falsch in dem unten beschriebenen Szenario. Ich bewerte einige SQL Server-Versionen für ein Projekt und experimentiere mit verschiedenen DB-Typen in einer einfachen Java-Umgebung. Ich benutze Eclipse, Java 6 (1.6u45), Treiber sqljdbc4.jar, Sql Server 2012 (Standardinstallation), Windows 7, und ich versuche zu schreiben und aus einer Testdatenbank/Tabelle verschiedene DB-Typen zurückzulesen. Für Spalten des Typs NVARCHAR (n oder max) und/oder VARCHAR (n oder max) schreiben Sie mit den Methoden setClob() und setCharacterStream() ohne Probleme in die DB. Aber wenn ich versuche, die Clobs zurückzulesen, kann ich nur getCharacterStream() verwenden. Aus Gründen, die ich nicht verstehen kann, kann ich getClob() nicht mit einem der oben aufgeführten DB-Typen verwenden. Ich erhalte den folgenden Ausnahme-Stack:SQL Server 2012 getClob(): Die Konvertierung von varchar (nvarchar) zu CLOB wird nicht unterstützt

com.microsoft.sqlserver.jdbc.SQLServerException: The conversion from varchar to CLOB is unsupported. 
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) 
at com.microsoft.sqlserver.jdbc.DataTypes.throwConversionError(DataTypes.java:1117) 
at com.microsoft.sqlserver.jdbc.ServerDTVImpl.getValue(dtv.java:2419) 
at com.microsoft.sqlserver.jdbc.DTV.getValue(dtv.java:176) 
at com.microsoft.sqlserver.jdbc.Column.getValue(Column.java:113) 
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:1981) 
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:1966) 
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getClob(SQLServerResultSet.java:2488) 
at main.com.test.Test.main(Test.java:77) 

ich keine Referenz für diese Ausnahme finden konnte. MS-Dokumentation behauptet, dass getClob() für NVARCAHR/VARCHAR-Spalten unterstützt wird. Code ist sehr einfach, ein Einfügen und dann "Select * from table" und dann positions resultset.getxxx (Position) Anrufe. Vielen Dank im Voraus für Anregungen oder Ideen.

+0

haben Sie eine Lösung gefunden? –

Antwort

0

Vielleicht sollten Sie den Java-Code posten. Beispiel: Clob clob = rs.getClob (1)

sollte funktionieren ....

0

Bitte versuchen Sie useLOBs = false in Ihrer Verbindungszeichenfolge:

<dataSource 
    driver="net.sourceforge.jtds.jdbc.Driver" 
     url="jdbc:jtds:sqlserver://server/database;useLOBs=false" 
    user="user" 
    password="password" /> 

Beachten Sie, dass der Treiber verwende ich nicht von Microsoft ist. Es ist JTDS, von http://jtds.sourceforge.net/

Verwandte Themen