我们遇到了有关索引扫描(SQL Server 2000及更高版本)的JTDS文档中描述的性能问题,因此必须将sendStringParametersAsUnicode
参数设置为false
。
对于99.9%的情况,这是好的,但是,我们有一个应用程序依赖于ntext字段中的unicode数据。我们使用存储过程写入上述表,该存储过程具有NTEXT参数。由于更改了上面的设置,我们的unicode字符串被转换为'?'字符,这不是特别有用。
我摆弄了各种各样的东西,包括:
setObject(1, unicode_string, Types.NCLOB); //as well as NVARCHAR
stmt.setUnicodeStream(1, new ByteArrayInputStream(unicode_string.getBytes("UTF16")), unicode_string.length());
setNClob(1, unicode_string);
然而,这些都不起作用。有什么想法吗?
答案 0 :(得分:0)
一种解决方法(虽然不是正确答案)是使用声明而不是 CallableStatement :
stmt = cn.createStatement();
stmt.execute("INSERT INTO test_unicode (my_unicode) VALUES (N'" + input + "')");
然而,这会带来显着的性能开销。