这个是我的原代码:
if edit2.Text=edit3.Text then
  begin
   if MessageDlg('你真的要修改吗?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
    begin
     ClientDataSet1.Close;
     ClientDataSet1.CommandText:='update tb_operatorinformation set pswd_log='+#39+trim(Edit2.Text)+#39+' where id='+user_id+';
     ClientDataSet1.excute;
     showmessage('更改完毕!');
     Edit1.Text:='';
     Edit2.Text:='';
     Edit3.Text:='';
    end;
  end;
出现错误“project1.exe raised exception class EOleException with message"灾难性故障"process stopped. ”
我把 sql语句改成select就是可以通过的,但是ClientDataSet1只能用open,要是改为EXECUTE也是会出同样的错误。
这段程序到底是什么地方的问题啊?请高手指点。分可以另开帖子再给。

解决方案 »

  1.   

    把pswd_log='+#39+trim(Edit2.Text)+#39+' where id='+user_id+';改成pswd_log='''+trim(Edit2.Text)+''' where id='''+user_id+''';看看
      

  2.   

    ClientDataSet1.CommandText:='update tb_operatorinformation set pswd_log='+#39+trim(Edit2.Text)+#39+' where id='+user_id+';
    --==================================
    这句是问题的--改成
    ClientDataSet1.CommandText:='update tb_operatorinformation set pswd_log='+#39+trim(Edit2.Text)+#39+' where id='+#39+user_id+#39;
      

  3.   

    好象不是sql语句的问题,是不是我的ClientDataSet1设置有什么问题啊??还是服务器端设置有什么要求啊??
        ClientDataSet1.Active:=false;
        SocketConnection1.Address:=self.Edit1.Text;
        SocketConnection1.ServerName:='project1.yclj';
        ClientDataSet1.Active:=true;
    这个就是我客户端的控件设置了??是不是有什么问题啊?
      

  4.   

    不明白楼主为什么要这样来更新数据。这样,你的中间层(应用程序服务器)存在的意义是什么?为什么不在应用程序服务器中输出一个 Method 来做这个工作呢?
      

  5.   

    不好意思,我不是很清楚你的意思,你能把那个 Method 的做法说的清楚一点吗?
    不好意思,小弟第一次用这样的结构,对其不是很了解,谢谢
      

  6.   

    to:ppiy3670() 
    就上面我要的目的,你说的输出一个method怎么实现啊?