有一个人员的密码字段,加密后就有ascii超过127的各种乱七八糟的字符。现要求从oracle中读取然后插入到paradox中。现在用的是select * from oracle的表。 然后oracle的query.FieldByName.asstring 然后 insert into paradox的表中。很显然不能插入完全。请问如何才能完整的插入到本地表中呢? 

解决方案 »

  1.   

    字符中包含单引号或者双引号。是这个不行。因为组合sql语句的时候都是''''+query.FieldByName['aa'].asstring +''''的等等。
      

  2.   

    用参数的形式就可以避免这种情况,如下 
     With ADOQuery1 do  
      Begin             
        Close;          
        Sql.text:=      
        '   Insert into GGLS_CURRENCY  '+
        '   (CURRENCY_CODE,CURRENCY_NAME,REMARK)  '+
        '  values (:P_CURRENCY_CODE,:P_CURRENCY_NAME,:P_REMARK)   ';
        Parameters.ParamByName('P_CURRENCY_CODE').Value:= 你的值;
        Parameters.ParamByName('P_CURRENCY_NAME').Value:= 你的值;
        Parameters.ParamByName('P_REMARK').Value:= 你的值;           
        ExecSQL ;                
      End;              
      

  3.   

    楼上的方法可行,我这里也提供另一种方法供楼主参考:
    1、用TABLE控件挷定paradox库中的表。
    2、
      TABLE.Append;
      TABLE.FieldByName('').AsString := query.FieldByName('').asstring //写入你查出来的密码数据。。
      ...
      TABLE.POST;
      

  4.   

    遇到引号,请用Quotedstr()这个函数好了,省事,直接Quotedstr(字符串),就自动加上引号,自己去家,麻烦死了。