procedure TfrmGettingStarted.btnInsertClick(Sender: TObject);
const
  strInsert = 'insert into Categories(CategoryName, Description, Picture) values(:N, :D, :P)'; 
//:name, :age 参数 的方式(后面还要以数组的方式给出相应的值), 这比字符串的 Format 函数还要方便.
var
  iID: Integer;
begin
  if not FDconnection1.Connected then    Exit;
  // Insert a record   增
  FDconnection1.ExecSQL( strInsert , ['New category', 'Nasdcription',  $0234]);
  FDconnection1.ExecSQL( strInsert , ['asdfa',       'description',    $03134]);
  FDconnection1.ExecSQL( strInsert , ['Nvddy',       'New description', $0434]);
  FDconnection1.ExecSQL( strInsert , ['Asdf',        'New description', $03234]);
  FDconnection1.ExecSQL( strInsert , ['ADsadafda',    'New description', $03314]);
FDConnection1.ExecSQL('INSERT INTO MyTable(姓名,语文, 数学, 英语) VALUES(''AA'', 11,22,33), (''BA'', 11,22,33), (''CA'', 11,22,33)   ');
if not FDQuery1.Active then FDQuery1.Active:=true; // Get a scalar value from DB, 查,只返回第一个 结果值 iID := FDconnection1.ExecSQLScalar('select MAX(CategoryID) from Categories'); caption := 'Last CategoryID = ' + IntToStr(iID); end; procedure TfrmGettingStarted.btnUpdateClick(Sender: TObject); begin if not FDconnection1.Connected then Exit; // Update records 改 FDconnection1.ExecSQL('update Products set UnitPrice = UnitPrice * :P1 + :P2 ' + 'where ProductID < 3', [Random(5), Random(3)]); if not FDQuery1.Active then FDQuery1.Active:=true; end; procedure TfrmGettingStarted.btnDeleteClick(Sender: TObject); begin if not FDconnection1.Connected then Exit; // Delete a record 删 FDconnection1.ExecSQL('delete from Categories where CategoryName like :N', ['New category']); if not FDQuery1.Active then FDQuery1.Active:=true; end;