数据库上可以执行Insert、Update、Delete、Select等SQL语句,可以执行存储过程

1. Select语句

  1. 可以用标准数据集TSQLDataSet来执行
  2. 可以用TQuery执行

   1 lQuery := TQuery.Create(Self);
   2 lQuery.ConnectionString := 'DATABASEURL=BIZ:\Operation\OperationDB.DATABASE';
   3 lQuery.CommandText := 'SELECT * FROM CRM_Customer';
   4 lQuery.Open;

注:标准数据集和TQuery是有区别的,用标准数据集会自动的识别平台上定义的各种策略,字段上定义的查找属性、自动填充等属性,而用TQuery则直接发SQL语句到服务端,在客户端不作识别。

2. Insert、Update、Delete语句

  1. 可以用TQuery来执行

   1 lQuery := TQuery.Create(Self);
   2 try
   3   lQuery.ConnectionString := 'DATABASEURL=BIZ:\Operation\OperationDB.DATABASE';
   4   lQuery.CommandText := 'UPDATE CRM_Customer SET CustomerName="AAA" WHERE CustomerID="111"';
   5   lQuery.Execute;
   6 finally
   7   lQuery.Free;
   8 end;
  1. 可以用数据连接TConnection来执行

   1 lConnection := TConnection.Create(Self);
   2 try
   3   lConnection.ConnectionString := 'DATABASEURL=BIZ:\Operation\OperationDB.DATABASE';
   4   lConnection.ExecuteSQL('UPDATE CRM_Customer SET CustomerName="AAA" WHERE CustomerID="111"');
   5 finally
   6   lConnection.Free;
   7 end;

3. 存储过程

  1. 对于返回结果集的存储过程,用存储过程数据集TStoredProcDataSet调用
    • 存储过程

CREATE PROCEDURE test_proc
  @inprm  int ,
  @inprm1 int
AS
  select * from table1 where id=@inprm+@inprm1
GO

   1 //DataSetCCGCSJJ1: TStoredProcDataSet;   存储过程数据集控件.
   2 DataSetCCGCSJJ1.Params.ParamByName('@inprm').AsInteger:=1;
   3 DataSetCCGCSJJ1.Params.ParamByName('@inprm1').AsInteger:=2;
   4 DataSetCCGCSJJ1.Open;
  1. 对于不返回结果集的存储过程,用存储过程TStoredProc调用
    • 存储过程

CREATE PROCEDURE test_proc
  @inprm   varchar(255) ,
  @inprm1  varchar(255) ,
  @inprm2  varchar(255) ,
  @outprm  varchar(255) output,
  @outprm1 varchar(255) output,
  @outprm2 varchar(255) output
AS
  select @outprm=@inprm+@inprm1+@inprm2
  select @outprm1=@inprm1+@inprm2+@inprm
  select @outprm2=@inprm2+@inprm1+@inprm
GO

   1 //StoredProc1: TStoredProc;   存储过程控件.
   2 //Memo1: TMemo 显示存储过程返回参数用.
   3 StoredProc1.Params.ParamByName('@inprm').AsString:='1';
   4 StoredProc1.Params.ParamByName('@inprm1').AsString:='2';
   5 StoredProc1.Params.ParamByName('@inprm2').AsString:='3';
   6 StoredProc1.Execute;
   7 Memo1.Lines.Add(StoredProc1.Params.ParamByName('@outprm').AsString);
   8 Memo1.Lines.Add(StoredProc1.Params.ParamByName('@OUTPRM1').AsString);
   9 Memo1.Lines.Add(StoredProc1.Params.ParamByName('@OUTPRM2').AsString);
  1. 对于不返回结果集,也没有返回参数的,可以用存储过程TStrocProc调用,也可以用TQuery调用


数据集类

[[PageComment2()]]

执行SQL语句 (last edited 2007-08-16 08:53:50 by alang)