java读取sqlserver2008数据库的ntext类型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java读取sqlserver2008的ntext从网上查询到:在数据库(ms-sql)中使用ntext等大文本类型的数据时,当文本长度很大时,(比如超过4000),在使用select语句获得的数据集中将无法直接得到该字段的内容,必须要用其他方法获得。cx在java中可用ResultSet对象存放数据集,但无法直接将结果集中的ntext内容转换为字符串(如使用ResultSet对象的各getString()方法),而要用到ResultSet对象的getBinaryStream()方法。rpZT下面是一段完整地java代码,将整个过程放在一个类中,代码中有较详细地说明,这里不再赘述,敬请各位参考、指正:(如有更好的办法请及时说明)j(在代码中每次从数据库读取一个字节,是应为不知道数据库存放页面文件的最小占用空间是否为簇,否则可以一次多读一些了!)//代码起始2importjava.io.InputStream;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.UnsupportedEncodingException;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.sql.ResultSet;importjava.sql.DriverManager;importjava.sql.Connection;importjava.lang.ClassNotFoundException;publicclassReadBlobFromDatabase{=,KAvpublicReadBlobFromDatabase(){try{//加载数据库驱动程序,这里使用jdbc-odbc数据桥建立与数据库的连接sClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connectionconn=DriverManager.getConnection(jdbc:odbc:srrmis,username,passwd);Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE)//执行查询,获得结果集。在这个SQL语句中,ntext_column是一个ntext类型的字段,}49//约束条件选择index值为2的记录H94yVResultSetrs=stmt.executeQuery(selectntext_columnfrommytablewhere[index]=2)//将记录集中的指针指向第一条记录Fif(rs.next()){//定义整数c,存放InputStream读出来的字节所对应的整数eintc;InputStreamis=rs.getBinaryStream(1);//将二进制数据字节流转换为字符流,编码为16位、低位顺序的双字节国家字符(微机格式)j)InputStreamReaderisr=newInputStreamReader(is,UnicodeLittle);//循环读取文本对应的字节,直到文本结尾ndwhile((c=isr.read())!=-1){;StringtmpString=+(char)c;//这里用输出测试读出的结果,如果想将各个字符组合、或执行其他的处理,JX//可以在这里编写代码{9System.out.print(tmpString);}}}我的配置:Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);//sqlserver2005或者sqlserver2008需要sqljdbc4.jarStringdbUrl=jdbc:sqlserver://127.0.0.1:1433;databasename=slbs;Stringuser=sa;Stringpwd=sa*&;试了一下报错:com.microsoft.sqlserver.jdbc.SQLServerException:不支持从nvarchar到BinaryStream的转换。原来是我用的驱动不匹配;应用:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);读取成功。不过需要配置jdbc.odbc在win7下配置:名称与Connectionconn=DriverManager.getConnection(jdbc:odbc:srrmis,username,passwd);一致。登陆用户名密码与Connectionconn=DriverManager.getConnection(jdbc:odbc:srrmis,username,passwd);一致。Jdbc-odbc:1、工作原理:JDBC-ODBC(OpenDatabaseConnectivity,ODBC)桥驱动程序由Sun与Merant公司联合开发,主要功能是把JDBCAPI调用转换成ODBCAPI调用,然后ODBCAPI调用针对供应商的ODBC驱动程序来访问数据库,即利用JDBC-ODBC桥通过ODBC来存储数据源。JDBC-ODBC桥是一个JDBC驱动程序,对ODBC而言,它像是通用的应用程序,桥为所有适用于ODBC的数据库实现JDBC。它作为sun.jdbc.odbc包实现,其中包含一个用来访问ODBC的本地库。由于ODBC被广泛地使用,所以桥的优点是让JDBC能够访问几乎所有的数据库。桥支持ODBC2.x,这是当前大多数据ODBC驱动程序支持的版本。桥驱动程序为Java应用程序提供了一种把JDBC调用映射为ODBC调用的方法。因此,需要在客户端机器上安装ODBC驱动。JDBC-ODBC桥在JDBCAPI和ODBCAPI之间提供了一个桥梁,这个桥把标准的JDBC调用翻译成对应的ODBC调用,然后通过ODBC库把它们发送到ODBC数据源。不过我应用:Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);用rs.getString()方法也可以读取出数据。估计与前文的“当文本长度很大时,(比如超过4000),在使用select语句获得的数据集中将无法直接得到该字段的内容,必须要用其他方法获得”有关。未进行测试。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功