首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

,Delphi7下ADOQuery新增数据时出错

2013-03-26 
求救,Delphi7下ADOQuery新增数据时出错在同一个字段中插入完全相同的值,我用以下两种方式实现,但第二种却

求救,Delphi7下ADOQuery新增数据时出错
在同一个字段中插入完全相同的值,我用以下两种方式实现,但第二种却报数据长度大于字段最大长度的错误:

第一种方式:
用ADOQuery的ExecSQL方法直接执行insert语句

第二种方式:
用ADOQuery的Open方法先打开数据集,然后用ADOQuery.Append新增一条记录,
给每个字段赋值,然后用ADOQuery.Post




第二种方式插入数据时产生的问题:
-------------------------------------------------
数据表F_A,其有字段F1,类型为NVarchar2,长度20,
为表F_A插入一条数据,其中为字段F1插入的是16个长度的数字字符,比如“1011100000000000”,但是Oracle返回错误信息:
ORA-12899: value too large for column "myUser"."F_A"."F1" (actual: 41, maximum: 20)



相关环境及配置:
=====================================
服务器:
-------------------
操作系统:Red Hat Enterprise Linux 5.4 英文版
oracle版本:11.2.0.1
oracle字符集:AMERICAN_AMERICA.AL32UTF8 


客户端:
-------------------
操作系统:windows XP sp3 繁体版
oracle客户端版本:11.2.0.1
oracle客户端字符集:TRADITIONAL_CHINESE_TWIWAN.ZHT16MSWIN950
MDAC版本:2.81.1132


=========================
完全相同的配置,在我们自己的机子上运行没任何问题,
而在客户那里却会报ORA-12899错误


更为重要的是在我们自己安装了多台服务器,客户机,
也和客户运行环境完全相同的,也不有同的,
服务器有windows,有linux,有中文版有英文版,
客户机,是windows xp,有中文繁体\中文简体\英文版的,运行过程都没任何问题

求救,谢谢大家了!

[解决办法]
NVarchar:中文按2个字节计算,英文数字等1个字节计算
NVarchar2:是所有字符都是按2个字节计算(即字符和数字,标点,中文..等等都是按2个字符计算)

16个字符'1011100000000000' 显示是超出了20,实际要32个长度才能放的下

我觉得这样解释也不是很科学,因为第一种的INSERT已经实现了。
[解决办法]

引用:
...
我觉得这样解释也不是很科学,因为第一种的INSERT已经实现了。


是的,很不科学,不然我就成科学家了
他说INSERT实现了,說而已,到底是不是这样,实验出真理,你可以试试!!!
[解决办法]
我是报着求学的态度来的。受教。
[解决办法]
第一种方法,大家都知道,它是直接执行SQL语句,是数据库中自己处理,所以没有什么问题!
第二种方法,是使用ADOQuery的参数方法,你可以看一下ADOQuery.Paramter.('fdas').AsString
这里的AsString不是string类型,我记得好像是WideString类型。可能是这个原因导致的也不一定。
而且第二种方法DELPHI内部会经过处理,所以很有可能是在处理的过程中出的问题。所以我一般做DLEPHI程序的时候,如果数据库中是varchar2(30),那么界面中我只让输入15个字符。从来没有出过这样的问题!

热点排行