oracle char 中文乱码,关于jsp连接oracle char类型数据显示问题

在jsp中连接数据库当定义stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

时,数据库中char型字段,不管是中文英文数字,都显示不出来 比如 fff变成0x6666662020202020202020202020202020202020

改成stmt = con.createStatement();就没有这个问题

做过以下几种尝试

1。使用new String(rs.getString("author").getBytes("iso8859-1"),"gb2312");或者类似的内码变换都没有效果。

2。如果用rs.getBytes("author") 则报错,java.sql.SQLException: 无效的列类型: getBytes

3。把改过来改过去也没效果

我用的是resin 2.1.1 oracle是i816,jdbc驱动用的是oracle自带的classes12.zip

请问到底是怎么回事啊

还有一个问题一并请教

就是如果我想对当前页面的一个输入框内的数据进行检测,比如一个注册页面,我想看看填的userid数据库内存不存在,想在该输入框后面加一个按钮或联结,填好这个框后点击就可以通过调用java程序访问数据库进行检查,并返回结果,注意不能提交填表的页面。请问应该怎么做呢?

|

可以提交到新打开的页面,或者提交到隐藏帧

target=_blank target=hframe

|

表单文件:

其中check.html:(可用check.jsp代替。下面代码可由jsp生成)

alert("已经有此ID了")

|

表单文件:

其中check.html:(可用check.jsp代替。下面代码可由jsp生成)

alert("已经有此ID了")

|

可能是驱动的bug,换一个8.1.7的驱动试试

|

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

你把ResultSet设为记录集可以滚动、显示其它更新,记录集不能更新。

没有错啊。

请问你一下,其它类型的数据取出来有没有问题?只能char型的有问题吗?

|

所有用getString出来都有问题?对于varchar型等所有字符型的都一样?

用没有用classes12.zip?

|

- BUG-1349713

getString() of scrollable result sets returns incorrect values if

the column data contains multibyte characters.

估计就是这个bug,在817驱动中得到修正。

|

otn.oracle.com有下的,装上了还不行吗?

|

1、对于CHAR型、VARCHAR型、ONGVARCHAR型字段的取数据的方法是一样的,都是用rs.getString(col),如果你在数据中保存的不是内码,则不需要用getBytes("iso8859-1"),"gb2312");内码变换,如果中文,它是能够显示出来的。

2、你用rs.getBytes("author") 取数据当然错了。对于

Types.TINYINT、Types.BINARY、Types.VARBINARY、Types.LONGVARBINARY类型可能用rs.getBytes(col);取数据。

3、一般用

4、你要保证存在数据库中的数据是中文,你要对页面提交过的中文数据要进行内码变换,如:

String sPara = request.getParameter("para") ;

String sCpara = new String(sPara .getBytes("8859_1"),"gb2312");

"para"为你从页面提交过来的中文数据。

5、jdbc驱动用的是oracle自带的classes12.zip是要用到的。

6、对于stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

时,数据库中char型字段,不管是中文英文数字,都显示不出来 比如 fff变成0x6666662020202020202020202020202020202020

改成stmt = con.createStatement();我觉得不会有这样的问题出现,

你好好查一下原因。

|

对于你所说的不提交数据,不刷新页面,要与数据库交换信息,对于Bean是不行的,你想页面是客户端运行,而Bean是服务器端运行。不提交数据是不行。

除非你用applet。applet应该是可以的。

|

呵呵,那我就不知道怎么回事了,对全英文的列也是这样吗?

|

不懂。

oracle不懂。

sigh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值