Delphi 操作 SQL数据库

来源:互联网 发布:爆破数据库密码 编辑:程序博客网 时间:2024/05/16 18:49

Delphi 数据库查询(TADOQuery)

在一个程序中你会多次查询数据库的,因此在你写的查询方法中定义一个局部的ADOQuery就可以了,它返回一个数据集_RecordSet。最简单的应用如下:

function GetData: _RecordSet;       //获取一张表中的全部数据(_RecordSet是一种类型)
var
pADOQ: TADOQuery;                            //声明
begin
pADOQ := TADOQuery.Create(nil);           //创建
pADOQ.Connection := ADOCon;   //意思是ADOQuery连接数据库时用ADOConnection建立好的连接。
pADOQ.SQL.Text := 'select * from TableName';
pADOQ.Open;           //执行查询,如果是增、删、改则用pADOQ.ExecSQL
Result := pADOQ.Recordset;    //函数返回结果
end;

接下来是怎样用这个返回的结果集。
在用的地方再次声明一个ADOQuery,用于接收这个返回的结果集。(当然也可以直接使用)

var
    pADOQ: TADOQuery;
    pItem: TListItem;                            //一个listview,用于显示记录
begin
    pADOQ := TADOQuery.Create(nil);
    pADOQ.RecordSet := GetData;           //将结果集赋给pADOQ
    if pADOQ.RecordCount <= 0 then exit;    //结果集为空,退出
    pADOQ.First ;                                         //将游标放到结果集的第一条记录
    while not ADOQuery.Eof do                  //开始循环结果集(当该条记录不是最后一条时)
     begin
        pItem := lvMain.Items.Add;           //在listview中加一行
        pItem.Caption := Trim(ADOQuery.FieldByName('patid').AsString);
       pItem.SubItems.Add(ADOQuery.FieldByName('patname').AsString);
         pADOQ.Next;                     //游标移动到记录的下一条
end;



执行存储过程

  qryGetFZ.Close;
  qryGetFZ.SQL.Clear;
  qryGetFZ.SQL.Add('execute p_hh_AQSetSecQty :PtypeID,:szRec,:szUnit,:szQty,:Result output');
  qryGetFZ.Parameters.ParamByName('PtypeID').Value:=APtype;
  qryGetFZ.Parameters.ParamByName('szRec').Value:=1;
  qryGetFZ.Parameters.ParamByName('szUnit').Value:=0;
  qryGetFZ.Parameters.ParamByName('szQty').Value:=AQty;
  qryGetFZ.Parameters.ParamByName('Result').Value:='';
  qryGetFZ.ExecSQL;
  Result := qryGetFZ.Parameters.ParamByName('Result').Value;


//  with spHH do
//  begin
//    Close;
//    ProcedureName:='p_hh_AQSetSecQty';
//    Parameters.Refresh;
//    Parameters.ParamByName('@PtypeID').Value := APtype;
//    parameters.ParamByName('@szRec').Value := 1;
//    parameters.ParamByName('@szUnit').Value := 0;
//    Parameters.ParamByName('@szQty').Value := AQty;
//    parameters.ParamByName('@Result').Value := null;
//    Open;
//  end;
//
//  Result := spHH.parameters.ParamByName('@Result').Value;


0 0