当用一个ado控件时,操作了一个insert语句,因为数据库中第二个字段中的数据是中文,在执行此语句时,程序报错“字符串右阶段”,只显示了一些乱码,当改为英文数据时,程序正常;将该语句放在sqlserver的查询窗口执行,无论是什么类型的数据,都可以运行,所以我怀疑是dephi的问题。但是又不知如何解决,请各位帮帮忙?
详细代码如下:
先从一个表中读出一些数据,存入中间数组(都是字符串类型):
var stufield:array[1..10] of string;
...
adoquery1.sql.add('select sno,sname... from educant');
adoquery1.open;
stufield[0]:=adoquery1.fieldbyname('sno').asstring;
stufield[1]:=adoquery1.fieldbyname('sname').asstring;
..
然后把这些数据传入insert语句中:
...
adoquery2.sql.add('insert into student values(:data1,:data2,..)');
adoquery2.parameters[0].value:=stufield[0];
adoquery2.parameters[1].value:=stufield[1];
...
adoquery2.prepared;
adoquery2.execsql;运行时程序报错:字符串类型,右截断
调试时发现凡是中文字符的域在stufield中是正常的,
但是在adoquery2.parameters[].value中的值就变成了奇怪的字符,而且没有右引号请问各位这是怎么回事?如果代码不对的话应该怎么写?多谢!! 
字段我也将它设为200了,都不成,不好意思,说句不客气的话,我不是一个新手。我以前用delphi时,只是用bde,那时就不会出现这种情况,而且当时我就听说他的ado的支持不够,所以这次我怀疑是由于的delphi的ado对汉语支持不够。
我希望用过这方面编程的人给点建议和方法

解决方案 »

  1.   


    adoquery2.ParamByName('data1').asstring:=stufield[0];
    的形式看看吧
    (对不起我这里没有这装Delphi,在网吧里,不过,我的意思是用byName的形式访问参数来看看)
      

  2.   

    这个问题解决了,使用的是sql.text:='...'的方法。
    但是还有一个疑问,就是.text拼字符串的方法怎么传入string类型以外的数据?
    比如我的insert语句中有一个域是image类型,从另外一个表中读出