一。

用parameters配置T-sql查询语句进行结果集查询:

 

View Code
 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;

二,执行存储过程,返回结果集 和output,return参数

 

View Code
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
// 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;

 

 

 

 

 

posted on 2011-08-21 11:45  cnby  阅读(460)  评论(0编辑  收藏  举报