当前位置: 代码迷 >> SQL >> Java怎么读取Sql Server中Text字段(长字符串>8000)的内容?(非常急已经折腾好几天了)
  详细解决方案

Java怎么读取Sql Server中Text字段(长字符串>8000)的内容?(非常急已经折腾好几天了)

热度:248   发布时间:2016-05-05 13:41:35.0
Java如何读取Sql Server中Text字段(长字符串>8000)的内容?(非常急,已经折腾好几天了)
在网上查找了相关资料,有这样一个思路:通过Sql Server提供的ReadText进行分段读取,然后把ReadText放进存储过程,Java来调用存储过程获得读取字符串的指针,但问题是Java获得指针后,如何获得具体的字符串的内容呢?具体步骤如下:
1、创建表
CREATE TABLE yb_table_oa
   (
    id int,
    content text
   )
2、创建存储过程
CREATE   PROCEDURE   dbo.getText 
  @readt   varbinary(16)   output  
  AS  
  declare   @ptr   binary(16)  
  select   @ptr=textptr(content)  
  from   yb_table_oa
  where   id=1
  readtext   yb_table_oa.content  @ptr   0 1000
  set   @[email protected]
return 1234
GO
3、调用的Java代码
public String callTextString(String artId)  {
String textStr = "";
if (StringFun.notNull(artId)) {
Connection conn=null;
CallableStatement proc = null;
try
{
//建立连接       
conn = SQLConnectionManager.getInstance().getSQLConnection();
defaultCommit = conn.getAutoCommit();
proc = conn.prepareCall("{?=call getText(?)}");
          proc.registerOutParameter(1,Types.INTEGER);
proc.registerOutParameter(2,Types.VARBINARY);
proc.execute();  
byte[] ptr = proc.getBytes(1);
                 //关键这里获得指针后如何读取到字符串的内容呢?
proc.close();
conn.close();
}
catch(Exception ex)
{
SystemLogger.instance().logError(ex.getMessage());

}
}
return textStr;

}   

或者各位前辈和大侠有更好的方法,请告知,先行谢过了!
  相关解决方案