碰到一个很奇怪的问题:数据保存时,只要数据中包含了汉字,全角字符,就直接抛出异常:ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值。
实际上,我未使用long型字段。数据保存采用的是DbDataAdapter.Update(datatable)的方法保存的。
如果数据中只有英文字符,则能正常执行。
又如果在程序中拼接insert 语句的方式执行,哪怕包含了汉字,也可以正常保存。
可以肯定地是,我插入数据的长度远远小于数据库定义(我测试时只插入一个字符也错)在plsql中直接执行语句也没问题,所以,我想应该不是字符集的问题。
环境:win2003server 英文版 + oracle 10g
oracle字符集:SIMPLIFIED CHINESE_CHINA.UTF8还请大家帮忙看看。

解决方案 »

  1.   

    数据库字体设置问题,SQLServer里我碰到过,后来在所有可能是中文字符运算的前面加上N(例:set @Content=N'登录失败。卡号:'+@CardNumber)
    上面只是SQLServer的解决方法,oracle应该也有吧
      

  2.   

    没遇过这种情况,试试下面的:
    http://hi.baidu.com/rbtk/blog/item/c74c4ec2e53f8635e5dd3b1d.html
      

  3.   

    多谢,看过你给的链接,里面的两种解决方法第一种指定参数长度的方法,我没法试,因为DbDataAdapter.Update(datatable)我不知道该如何指定参数长度,这也不是一个一个值传递进去的。
    第二种方法,说要替换jdbc的驱动,我不太明白,.net链接oracle用的应该不是jdbc吧。
      

  4.   

    问题解决,更新了ODP11g就好了