(150大洋卖血求解)向库中写记录时只写了想写字串的一部分??(150分)

  • 主题发起人 主题发起人 kanny_chen
  • 开始时间 开始时间
K

kanny_chen

Unregistered / Unconfirmed
GUEST, unregistred user!
环境:delphi5+ADO+SQL7
问题:当UPDATE 数据或INSERT 数据时,想要"更改"或"插入"的字符串写到库中后
却写丢了一截.

我的操作方法:
1. 当UPDATE时: //其中A030404类型为VARCHAR,长度为8
writedata_qy.SQL.Add('update a0304 set a030404=:ddh where a030401=1');
writedata_qy.Parameters.ParamByName('ddh').value:=一个值为4个汉字的字符串;

execsql后,写到库中只有字符串中的前2个汉字,如果我将字符串的值写成8个汉字后,再运行写到库中就有
我想要的4个汉字了,不知为什么?

2. 当INSERT时:
我用的表的共有10个字段,第一个字段为主键,定义为:标识列(IDENTITY),想在同一表中插入一条记录
我的方法是: (其中:字段3的类型为VARCHAR,长度为30). 注:在SELECT子句中,只是没有列第一个标识字段


writedata_qy.sql.add('insert 库名 SELECT 字段2,字段3=:bb,...,字段10 FROM 库名 WHERE 字段5=条件'); writedate_qy.Parameters.ParamByName('bb').value:=一个值为10个汉字的字串;
EXECSQL后,写到库中的值只有原字串的前7个汉字

请各位大虾指点!!!
 
试试:
Params[0].Value := WideString('汉字');
 
把字段改成nvarchar试试!!
 
=>Another_eYes:
可是ADO的QUERY并不支持Params[0].Value 这种语法,还有其它办法吗?
 
=>windpray:
把字段改成nvarchar也试过了,没用,请再出高招!!
 
我是用adodataset!
修改数据时用EDIT。增加时用APPEND,修改或增加后用
ApplyUpdates(0)将数据传至sql server。
我没有用你的那种方法,也许我的对你的低级点,不过一定不用有问题!
我是用ADO+SQL SERVER +DCOM
希望对你有帮助!
 
点击writedata_qy的属性Paramters右边的...
出来param列表,将类型由 ftUnknown 改为 ftString
 
出来一个怪问题,我将要写的字符串的内容改为 E 文字母后却能写30个进去,但中文汉字
最多就7个.真是怪事
我到窗口去看了一下,天空没有出现UFO呀
 
先进SQL SERVER中,查看一下当前发生的SQL 语句,是不是你想要的SQL。
如果不是的话,看看程序是否有问题。
 
估计widestring和string之间存在不协调造成的. 这里把中文当string传, 那边把半个中
文字理解成一个widestring(32位), 所以造成只能写进一半中文字串.
 
你用 writedata_qy.Parameters.ParamByName('ddh').ASSTRING:='要加的字符串'; 试一试
如何。
 
=>hwk2000:
writedata_qy.Parameters.ParamByName('ddh').ASSTRING:='要加的字符串'
程序说ASSTRING没有申明,不支持该语法
 
=>Another_eYes
你分析得有道理,我将字串改为e文字母后就可以写满此字段,但将字串改为中文就写不了
应写的长度.
请你再说细一点好吗?
 
再加120分
 
算了,没人帮助我,不过大家来了不能白来,见者有份,分了吧(悲哀的),如果想到问题的所在
不要忘了通知我.
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部