JDBC链接SQLServer 2000取text类型字段的问题,解决者100分奉送

jndszl 2003-10-09 11:35:49

我有JDBC链接SQLServer 2000数据库中的一个表,有一个字段是类型是text的,

我用rs.getString(3) //3为字段是类型是text的字段编号一取就出错,但取其它类型的没事,放到EJB中通过findByPrimaryKey取出来也没有事。

org.apache.jasper.JasperException: [Microsoft][SQLServer 2000 Driver for JDBC]Re
sultSet can not re-read row data for column 3.


以下是我链接数据库的JAVABEAN

private void getContext() {
try {
ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/MSSQLDS");

try {
con = ds.getConnection();

}
catch (SQLException ex1) {
System.out.println("new getConnection error Message is " +
ex1.getMessage());
}

try {
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

}
catch (SQLException ex2) {
System.out.println("new createStatement error Message is " +
ex2.getMessage());
}

}
catch (NamingException ex) {
System.out.println("new InitialContext error Message is " + ex.getMessage());
}
}

public void Record(String _strSql) {
System.out.println(_strSql);
try {
rs = stmt.executeQuery(_strSql) ;
rs.last() ;
this._intRowCount = rs.getRow() ;
rs.first() ;
}
catch (SQLException ex) {
System.out.println("new getRecord error Message is " + ex.getMessage());

}

}
...全文
249 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jndszl 2003-10-11
  • 打赏
  • 举报
回复
写的不错,不错,结贴了
mtou 2003-10-09
  • 打赏
  • 举报
回复
InputStream ais=rs.getAsciiStream(3);
jndszl 2003-10-09
  • 打赏
  • 举报
回复
up上去
ygrmry 2003-10-09
  • 打赏
  • 举报
回复
楼上已帮我说了,另外我要补充一下:在这种情况下一般不要用一个String=String+String来进行叠加,这样字符串相加效率很低的,最好用StringBuffer的append()方法,最后再.toString()转为字符串,效率是百分之几90的提高!不妨可做个实验
。总之像SQLSERVER的image,text,还有Oracle和DB2的blob,clob等类型的字段(称为大字段)都不要用简单的getString()来获取,都要用流来转换,不然会有意想不到的结果!我就说这么多啦!
mtou 2003-10-09
  • 打赏
  • 举报
回复
InputStream ais=rs.getAsciiStream(3);
try
{
int c;
String _strGetText ="";
char temp;
while((c= ais.read())>-1)
{
temp=(char)c;
_strGetText =_strGetText +temp;
}
}catch(IOException e)
{
e.printStackTrace();
}
jndszl 2003-10-09
  • 打赏
  • 举报
回复
不晚,不晚,InputStream ais=rs.getAsciiStream(3);取得以后,我如何打在页面上显示?

String _strGetText ;

_strGetText = (String)InputStream.toString() ;

out.println(strGetText ) ;

这样显示出来吗?
ygrmry 2003-10-09
  • 打赏
  • 举报
回复
唉!我来晚了!不管取也多少次,我觉得最好不要用getString(int)方法来读取text类型的。还是用InputStream ais=rs.getAsciiStream(3);
方式会好一些!
jndszl 2003-10-09
  • 打赏
  • 举报
回复
我在什么地方取了两次,我取了一次呀,是不是我的BEAN中取得this._intRowCount = rs.getRow() ;的时间用了一次。你给我说的,还真管用,一会我就给你结分。呵呵
jndszl 2003-10-09
  • 打赏
  • 举报
回复
试一下
hj12 2003-10-09
  • 打赏
  • 举报
回复
同意楼上的,可能取了两次
kevincom 2003-10-09
  • 打赏
  • 举报
回复
是不是rs.getString(3)用了两次?
如果是这样将你连接数据库的bean中代码改一下,如下:
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
-->
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
课程简介 随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单表存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决表技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆成若干数据库组成 ,将数据大表拆成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解表技术。 课程价值 表技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授表技术的解决方案,包括:垂直库、垂直表、水平库、水平表、读写离,涵盖了表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。 课程优势 本课程不仅讲解多种有效的表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将表技术应用到生产实践中,解决大数据存储与处理的问题
Re: Mycat 实现 MySQL的表、读写离、主从切换 =============================# MyCAT 作用是能够代替昂贵的oracle的MySQL集群中间件。     1) 一个彻底开源的,面向企业应用开发的“大数据库集群”    2) 支持事务、ACID、可以替代Mysql的加强版数据库    3) 一个可以视为“MySQL”集群的企业级数据库,用来替代昂贵的Oracle集群(核心价值观) (即:可不用 Orcale数据库及RAC等,以此代替)    4) 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server    5) 结合传统数据库和新型布式数据仓库的新一代企业级数据库产品    6) 一个数据库中间件产品 # MyCAT 目标:    1) 低成本的将现有的单机数据库和应用,平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。从这一点介绍上来看,能满足数据库数据大量存储,提高了查询性能。    2) MyCat在大数据方面的运用不容小觑啊。 # MyCAT 特性    1) 支持 SQL 92标准    2) 支持Mysql集群,可以作为Proxy使用    3) 支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用    4) 支持galera for mysql集群,percona-cluster或者mariadb cluster, (提供高可用性数据片集群)    5) 自动故障切换,高可用性(failover & HA)    6) 支持读写离,支持Mysql双主多从,以及一主多从的模式    7) 支持全局表,数据自动片到多个节点,用于高效表关联查询    8) 支持独有的基于E/R 关系的片策略,实现了高效的表关联查询    9) 多平台支持,部署和实施简单 # MyCAT 架构    用户可以把MyCAT看作是一个数据库代理,用mysql客户端工具(如Navicat)和命令访问,其核心功能就是表,即将一个大表水平割为N个小表,真正的存储在后端Mysql服务器中或其它数据库中。      
课程目标快速的掌握库的实战,即插即用适用人群IT从业人员,开发人员,Java从业者,互联网从业者,性能调优人群课程简介ShardingSphere是一套开源的布式数据库中间件解决方案组成的生态圈。它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成,shardingSphere定位为关系型数据库中间件。 Sharding-JDBCSharding-JDBC是Sharding-Sphere的第一个产品,也是Sharding-Sphere的前身,是当当网开源的一个产品。定位为轻量级的Java框架,在Java的JDBC层提供额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。他们均提供标准化的数据片、读写离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Sharding-JDBC可以通过Java,YAML,Spring命名空间和Spring Boot Starter四种方式配置,开发者可根据场景选择适合的配置方式。课程特色 本章节以尽量短的时间,为使用者提供最简单的ShardingSphere的快速入门。课程说明该课程属于系列课程,为读写离,库不表,不表,表,读写离+表共5个回合。本课程属于其中一个回合,请各位小哥哥们注意,课程的标题哦~

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧