我用两个ADOconnection连接,一个连本地access,一个连服务器oracle,都能连上,我想把access里的有些字段记录导入到服务器上,用adoquery,
我做了个测试,看能不能对服务器插入,如下:
var
i:string;
begin
i:='myname';
with queryoracle  do
    begin
      close;
      sql.clear;
      sql.add('insert into t_sportbig(F_code,f_name)'+
              '  values(999998,1234)');
      execsql;
    end;
end;
为什么我在我的机器上加dbgrid,能看到,而在服务器上看不到呢?
还有oracle定义f_name是var(40)而我用
      sql.add('insert into t_sportbig(F_code,f_name)'+
              '  values(999998,"'+i+'")');
就显示用错,语法不对吗?
那位高手帮解释以下这两个问题,谢谢!!

解决方案 »

  1.   

    sql.add('insert into t_sportbig(F_code,f_name)'+
                  '  values(999998,"'+i+'")');
    语法当然错啦,,"'+i+'"表示什么值啊?是字符串还是整数?应该
          sql.add('insert into t_sportbig(F_code,f_name)'+
                  '  values(:a,:b)');
            Parameters.parambyname('a').Value:=999998;
            Parameters.parambyname('b').Value:=''''+inttostr(i)+'''';
    把常数付给变量就好看一点。
      

  2.   

    第一个问题,用UPDATE试试 应该能够解决问题,至于怎么用,你自己试一下,由于我用的方法和你的不一样,我是用ADO+ORACLE建立三层数据库,我用的是dataset.post.update(-1)(不好意思,原句想不起来了),完成数据库中的更新
      

  3.   

    在问一个低等问题:有字符串'sh001923',我想取后6位,转换成数字,
    好象有个RSTR吧。或者是SUBSTR函数。
      

  4.   

    Oracle数据操作最后需要提交Commit
      

  5.   

    是什么的commit啊!query没有commit啊!
      

  6.   

    我不太会用dataset他有什么用处吗?看书也没看出他有什么用