delphi 连接 oracle 10G的数据库使用select 查询数据没有问题,但是发现一用update、delete 就出现问题id := '23';
     SqlStr := 'UPDATE tbProviderInf SET Providername='''+Edit1.Text+''','
                +'ProviderCode='''+Edit2.Text+''','
                +'ProviderMan='''+Edit3.Text+''','
                +'ProviderTel='''+Edit4.Text+''','
                +' providermemo='''+Memo1.Text+''''
                +' where ProviderId = TO_NUMBER(''' + id +''') ';
    with NMDQuery do
    begin
      Close;
      Sql.Text := SqlStr;
      ExecSQL;  一执行到这步程序就崩溃了,也没有错误提示。 但是把sql语句调出来在pl sql里面执行没有问题,奇怪。请问是哪出的问题?

解决方案 »

  1.   

    这么怪,你执行一个别的update语句也有这种情况吗,试试
      

  2.   

    showmessage一下你得sqlstr就知道---------------------------
    Project1
    ---------------------------
    UPDATE tbProviderInf SET 
    Providername='Edit1',
    ProviderCode='Edit2',
    ProviderMan='Edit3',
    ProviderTel='Edit4', 
    providermemo='Memo1
    ' where ProviderId = TO_NUMBER('23') 
    ---------------------------
    OK   
    ---------------------------
    多了个引号
    var
      id,sqlstr:string;
    begin
    id := '23';
    SqlStr := 'UPDATE tbProviderInf SET Providername='''+Edit1.Text+''','
                    +'ProviderCode='''+Edit2.Text+''','
                    +'ProviderMan='''+Edit3.Text+''','
                    +'ProviderTel='''+Edit4.Text+''','
                    +' providermemo='''+Memo1.Text+''
                    +' where ProviderId = TO_NUMBER(''' + id +''') ';
    showmessage(sqlstr);
    end;
      

  3.   

    我设置了断点,已经看过了变量里面的内容,且把内容复制出来在 pl sql里面执行无误
      

  4.   

    我以前也碰到过这种情况,update以后,跟死了一样。pl/sql关掉,重新连接,然后再试delphi的,也重新连接,结果好了...
    也许,有些东西没法用科学解释的。
      

  5.   

    不是多个引号吧,是Memo里有回车吧,要不'怎么会跑到下一行?
      

  6.   

    为什么不用参数,而直接构造SQL语句,看起来太乱