Java 读取sqlserver2008的ntext
从网上查询到:
在数据库(ms-sql)中使用ntext等大文本类型的数据时,当文本长度很大时,(比如超过4000),在使用select语句获得的数据集中将无法直接得到该字段的内容,必须要用其他方法获得。cx
在java中可用ResultSet对象存放数据集,但无法直接将结果集中的ntext内容转换为字符串(如使用ResultSet对象的各getString()方法),而要用到ResultSet对象的getBinaryStream()方法。rpZT
下面是一段完整地java代码,将整个过程放在一个类中,代码中有较详细地说明,这里不再赘述,敬请各位参考、指正:(如有更好的办法请及时说明)j
(在代码中每次从数据库读取一个字节,是应为不知道数据库存放页面文件的最小占用空间是否为簇,否则可以一次多读一些了!)
//代码起始2
import java.io.InputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.Connection;
import http://www.doczj.com/doc/bab0d4870b4e767f5bcfce8a.htmlng.ClassNotFoundException;
public class ReadBlobFromDatabase {=,KAv
public ReadBlobFromDatabase() {
try {
//加载数据库驱动程序,这里使用jdbc-odbc数据桥建立与数据库的连接s
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:srrmis", "username", "passwd");
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE) //执行查询,获得结果集。在这个SQL语句中,ntext_column是一个ntext类型的字段,}49