一。
用parameters配置T-sql查询语句进行结果集查询:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
with fdm.ADOQ_any do
begin
Close;
SQL.Clear;
SQL.Add('select * from userb where userzh=:userzh and usermm=:usermm');
Parameters.ParamValues['userzh']:=Cbo_id.Text;
Parameters.ParamValues['usermm']:=ed_userpassword.Text;
open;
end;
if fdm.ADOQ_any.RecordCount =0 then
begin
//do something;
end else
begin
//do something;
end;
begin
Close;
SQL.Clear;
SQL.Add('select * from userb where userzh=:userzh and usermm=:usermm');
Parameters.ParamValues['userzh']:=Cbo_id.Text;
Parameters.ParamValues['usermm']:=ed_userpassword.Text;
open;
end;
if fdm.ADOQ_any.RecordCount =0 then
begin
//do something;
end else
begin
//do something;
end;
二,执行存储过程,返回结果集 和output,return参数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
procedure TForm1.Btn2Click(Sender: TObject);
begin
With AdoSp1 do
begin
Close;
ProcedureName:='SelectOneCustomerByCustomerId';
Parameters.CreateParameter('@ret',ftInteger,pdReturnValue,4,0); //返回值要写在第一位
Parameters.CreateParameter('@Customerid',ftString,pdInput,5,'ALFKI');
Parameters.CreateParameter('@CustomerCount',ftInteger,pdOutput,4,0);
Open; //因为返回的有结果集,所以必须用open方法,而不能用execsql //执行
end;
mmo1.Lines.Add(AdoSp1.Parameters[0].Value) ; //等同 AdoSp1.Parameters.ParamByName('').Value
begin
With AdoSp1 do
begin
Close;
ProcedureName:='SelectOneCustomerByCustomerId';
Parameters.CreateParameter('@ret',ftInteger,pdReturnValue,4,0); //返回值要写在第一位
Parameters.CreateParameter('@Customerid',ftString,pdInput,5,'ALFKI');
Parameters.CreateParameter('@CustomerCount',ftInteger,pdOutput,4,0);
Open; //因为返回的有结果集,所以必须用open方法,而不能用execsql //执行
end;
mmo1.Lines.Add(AdoSp1.Parameters[0].Value) ; //等同 AdoSp1.Parameters.ParamByName('').Value
// paramByName返回的是string类型,parameters[]返回variat类型,所以ParamByName效率更高些
mmo1.Lines.Add(AdoSp1.Parameters[1].Value) ;
mmo1.Lines.Add(AdoSp1.Parameters[2].Value) ;
while not AdoSp1.Recordset.EOF do //循环结果集
begin
mmo1.Lines.Add(AdoSp1.Recordset.Fields['companyname'].Value);
AdoSp1.Recordset.MoveNext;
end;
end;
mmo1.Lines.Add(AdoSp1.Parameters[1].Value) ;
mmo1.Lines.Add(AdoSp1.Parameters[2].Value) ;
while not AdoSp1.Recordset.EOF do //循环结果集
begin
mmo1.Lines.Add(AdoSp1.Recordset.Fields['companyname'].Value);
AdoSp1.Recordset.MoveNext;
end;
end;