我用的是SQL+DELPHI,运用三层结构,怎么在表中INSERT记录呢
我希望的是从客户端获得一条记录的信息,然后传到服务器端,在服务器端实现INSERT功能,不知道这样可不可以实现,怎么实现????谢谢各位帮忙!!!

解决方案 »

  1.   

    试一试这样吧
    在客户端放一个TClientDataSet 并把它的RemoteServer和Providername属性设好。关键要把Providername 设为中间层用于insert的DataSetProvider,
    然后再客户端加入如下代码
    ClientDataSet.close;
    ClientDataSet.commandtext:='insert into table values(:tt)';
    ClientDataSet.ExecSQL;
      

  2.   

    先在中间服务器上的Query写上:
                    Query1.sql.add('insert into table values(你想要的值)');
    然后在客户端: 
                 with clientdata do
                   begin
                     close;
                     params.parambyanme().vaule:='你想要传递的值';
                     ....
                     execsql;
                   end;   
      

  3.   

    在服务器端增加一个接口,增加方法InsertData
    procedure InsertData(TableName:string; FieldArray:array of     string;ValueArray:array of string);
    var
      I:Integer;
      sSql, sFields, sValues:string;
    begin
      if (Length(FieldArray) <> Length(ValueArray)) or (Length(FieldArray)=0) then
      begin
        raise Exception.Create('传入的参数错误!');
        Exit;
      end;
      sSql := 'Insert into '+TableName+'(';
      sFields := '';
      sValues := '';
      for I:=Low(FieldArray) to High(FieldArray) do
      begin
        if I<High(FieldArray) then
        begin
          sFields := sFields + FieldArray[I]+ ',';
          sValues := sValues + ValueArray[I]+','; 
        end
        else begin
          sFields := sFields + FieldArray[I];
          sValues := sValues + ValueArray[I];
        end;
      end;
      sSql := sSql + sFields +') values('+sValues+')';
      with ADOQuery1 do
      begin
        if Active then Active := false;
        sql.add(sSql);
        try  end;
    end;
      

  4.   

    在服务器端增加一个接口,增加方法InsertData
    procedure InsertData(TableName:string; FieldArray:array of     string;ValueArray:array of string);
    var
      I:Integer;
      sSql, sFields, sValues:string;
    begin
      if (Length(FieldArray) <> Length(ValueArray)) or (Length(FieldArray)=0) then
      begin
        raise Exception.Create('传入的参数错误!');
        Exit;
      end;
      sSql := 'Insert into '+TableName+'(';
      sFields := '';
      sValues := '';
      for I:=Low(FieldArray) to High(FieldArray) do
      begin
        if I<High(FieldArray) then
        begin
          sFields := sFields + FieldArray[I]+ ',';
          sValues := sValues + ValueArray[I]+''','''; 
        end
        else begin
          sFields := sFields + FieldArray[I];
          sValues := sValues + ValueArray[I]+'''';
        end;
      end;
      sSql := sSql + sFields +') values('+sValues+')';
      with ADOQuery1 do
      begin
        if Active then Active := false;
        sql.add(sSql);
        try
          ExecSQL;
        except
        end;
      end;
    end;
    然后在客户端调用就可以了
    不好意思,刚才没输完就提交了,按错键了。