在Java中将nvarchar(max)数据类型转换为字符串

4

我正在使用jTDS API在SQL Server 2008上执行以下SQL查询:

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

这三个字段的数据类型如下:

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

当我使用Java执行查询时,a和b的字符串值是纯文本,但对于c,我得到以下值:

net.sourceforge.jtds.jdbc.ClobImpl@2b34fb

似乎它被存储为对象,我该如何将其转换为普通字符串?

Java中的类型是什么?DBVT_STRING?DBVT_ASTRING?还是其他什么? - Aaron Bertrand
1
当您从“ResultSet”中获取值时,我想您已经尝试过getString(column)getCharacterStream(column)了吧? - Dilum Ranatunga
DBVT_STRING?即使我尝试对它进行toString操作,它仍然是相同的。 - Pradeep
可能想要查看这个链接:http://sourceforge.net/projects/jtds/forums/forum/104389/topic/4623409 - Eric Petroelje
找到了这个,看一下:https://dev59.com/H3I95IYBdhLWcg3wwwyY - Roberto Navarro
很好,感谢您的回答帖子;希望它能帮助其他人。 - Roberto Navarro
2个回答

7

我尝试了@Roberto Navaron发送的链接,它起作用了,只需将对象传递给此方法,将其强制转换为clob并返回字符串。

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();
}

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接