更新的时候出现ORA-01461错误

badegghyt 2009-03-24 01:03:18
使用的数据库是Oracle 10g,被更新的表中的字段中除了VARCHAR2之外就是DATE类型。最大的那个VARCHAR2的长度是100,也就是VARCHAR2(100)。

在GridView中的一个文本框中录入数据,更新时提示出错。出错信息如下:
ORA-01461 can bind a LONG value only for insert into a LONG column

和文本框对应的那个表字段的定义为varchar2(100)。

一个很奇怪的现象是,在这个字段前面或后面随便再加一个字母或其他字,就能正常更新。

有人遇到过同样的问题吗?知道是怎么回事吗?真的被整懵了。。。
...全文
117 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
badegghyt 2009-03-24
  • 打赏
  • 举报
回复
查完了Oracle的版本:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

看来不是Oracle版本的问题...
zzxap 2009-03-24
  • 打赏
  • 举报
回复
今天发生了ORA-01461 :can bind a LONG value only for insert into a LONG ...到处查询发现是一个字段中的中文内容导致,仔细分析了一下原因,是因为jdk1.5的String类型为utf-16编码方式,而jdk1.4为utf-8,通过在oracle网上查询10g的jdbc驱动有两个版本,旧版的不持jdk1.5,只支持jdk1.4,通过换jdbc驱动问题解决。
zzxap 2009-03-24
  • 打赏
  • 举报
回复
这有可能是驱动和oracle的服务器版本对不上。
你的oracle是10.1.0.2或以前的吗?如果是的话,oracle本身认为这是一个bug,所以,还是升级你的oracle吧。
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_readme101040.html
第一条。
ybsl97 2009-03-24
  • 打赏
  • 举报
回复
不一定的,有时候你定义VARCHAR2(100)不一定真的到100才报错。
LZ请到Oracle区问问吧。那边对Oracle问题回答的会比较专业一些。
badegghyt 2009-03-24
  • 打赏
  • 举报
回复
补充说明一下,录入的那段数据为一条句子,除了逗号和句号之外,并没有特别的字符。

前4个月的时候有出现过这种情况一次,今天又出现了,看来不解决不行了。

我自己也在百度google上一顿找原因,好多说的都是字符串太长什么的,但是我录入的那个句子加上逗号句号长度也就为31。

希望高手帮忙指点一下,谢谢啊!!!

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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