首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

为什么TClientDataSet不能将数据提交给数据库呢?该如何处理

2012-04-06 
为什么TClientDataSet不能将数据提交给数据库呢?客户端的代码Memo1.Lines.text为select * from Customers

为什么TClientDataSet不能将数据提交给数据库呢?
客户端的代码
Memo1.Lines.text为select * from Customers;
procedure TForm1.Button4Click(Sender: TObject);
begin
  cdsCustomer.Edit;
  cdsCustomer.FieldValues['CustomerID']:=edit1.Text;
  cdsCustomer.Post;
  cdsCustomer.ApplyUpdates(0);//此处提交了后,数据并未写入数据库 为什么呢??
end;

应用服务器端的设置情况
unit Unit2;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
  Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
  DBClient, Project1_TLB, StdVcl, Provider, DB, ADODB;

type
  Tpc121 = class(TRemoteDataModule, Ipc121)
  ADOTable1: TADOTable;
  DataSetProvider1: TDataSetProvider;
  ADOConnection1: TADOConnection;
  ADOQuery1: TADOQuery;
  private
  { Private declarations }
  protected
  class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
  public
  { Public declarations }
  end;

implementation

{$R *.DFM}

class procedure Tpc121.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
  if Register then
  begin
  inherited UpdateRegistry(Register, ClassID, ProgID);
  EnableSocketTransport(ClassID);
  EnableWebTransport(ClassID);
  end else
  begin
  DisableSocketTransport(ClassID);
  DisableWebTransport(ClassID);
  inherited UpdateRegistry(Register, ClassID, ProgID);
  end;
end;

initialization
  TComponentFactory.Create(ComServer, Tpc121,
  Class_pc121, ciMultiInstance, tmApartment);
end.

[解决办法]
cdsCustomer.ApplyUpdates(0); 
并没有异常 
在dbgrid中都已经反映出来了 
但是就是sqlserver那个数据库确没有改变 
==================================================
delphi 
在调试的时候并没有报告异常 
但是 
sqlserver数据库中该表是有约束条件的 
所以修改不成功
==================================================
因为cdsCustomer.ApplyUpdates(0); 的参数为0,所以客户端不能接收到错误,而DBGrid显示的是本地的数据,要想在客户端捕获错误,必须设置ApplyUpdates的最大错误参数,-1是出现错误后服务器立即停止操作,返回错误。至于客户端捕获错误的具体办法,Delphi例子中有,可以参考。表的约束条件错误就是我前面所说的外键约束违法了
[解决办法]
像这种情况建议在调试时打开 sql server 的事件 查看器,这样比较容易跟踪sql 语句出现的问题
[解决办法]
SQL可能用事件查看器

热点排行