ADO中怎么使用参数化查询

C/C++ code
?
1
2
3
4
5
6
7
8
//Command因为参数无法清空,不太好操作,所以在此使用实时创建
_CommandPtr pCmd(__uuidof(Command));
pCmd->ActiveConnection=m_conn;
pCmd->CommandText= "select * from 帐号 where 昵称=? and 密码=?" ;
pCmd->Parameters->Append(pCmd->CreateParameter(_bstr_t( "" ),adVarChar,adParamInput,20,accounts_name));
pCmd->Parameters->Append(pCmd->CreateParameter(_bstr_t( "" ),adVarChar,adParamInput,20,accounts_password));
m_rst=pCmd->Execute(NULL,NULL,adCmdText);
pCmd.Release();


    上面的代码是使用ADO参数化查询的一个示例,但是它只适用于字符串类型。以前学VB中这种应用是比较简单的,但是VC中COM没封装,比较复杂。

    我们日常使用中一般主要是使用int,double,string,datetime类型,请问能否就这4种类型变量给个完整的示例?或者给个网址我自己学习也行。MSDN上我没查到,给个MSDN目录路径也行。


补充一下:
上面的代码是给command对象提供参数,我想要的是怎么从recordset中提取值,我已经查到这两种值的读取方法,string和double类型怎么提取呢?

1、数字型数据的读取
_variant_t   是COM中的数据类型,实际上是个集合类,在ADO中可以通过判断_variant_t中的VT的类型,来判断出他的类型比如   

C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   _variant_t   var;   
   CString   str;   
   switch (var.vt)   
   {   
   case  VT_I2:
     strRet.Format(_T( "%hd" ),V_I2(&var));
     break ;   
   case  VT_I4:
     strRet.Format(_T( "%d" ),V_I4(&var));
     break ;   
   case  VT_R4:
     strRet.Format(_T( "%f" ),V_R4(&var));
     break ;
   case  VT_R8:
     strRet.Format(_T( "%f" ),V_R8(&var));
     break ;   
   default :
     break ;   
   }   

2、CTime类型的读取
如果你的数据库表的字段是datetime类型的话,
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
_variant_t  var=m_pRecordSet->GetCollect( "ZHXGRQ" );  
time_t   lTime=0;  
if (var.vt!=NULL)  
{  
            CTime  tempTime(((COleDateTime)var).GetYear(),  
                        ((COleDateTime)var).GetMonth(),  
                        ((COleDateTime)var).GetDay(),  
                        ((COleDateTime)var).GetHour(),  
                        ((COleDateTime)var).GetMinute(),  
                        ((COleDateTime)var).GetSecond());  
}  
用通配符就可
CString s;
s.Format("select * from 帐号 where 昵称='%s' and 密码=%d",name,pwd)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值