一。
用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 ;
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
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 ;