请问在ADO中如何执行一个带参数的SQL语句呢?
如:select * from users where user_id like :m_userid and password like :m_password .我想在_ConnectPtr或_CommandPtr的execute中执行,但我不知道如何写代码以传送参数m_userid和m_password,这两个参数的实参是用户在两个编辑框里输入的。问题解决立即送分,拜托各位前辈了!
如:select * from users where user_id like :m_userid and password like :m_password .我想在_ConnectPtr或_CommandPtr的execute中执行,但我不知道如何写代码以传送参数m_userid和m_password,这两个参数的实参是用户在两个编辑框里输入的。问题解决立即送分,拜托各位前辈了!
比如说:
CString strSQL;
strSQL = "select * from users where user_id like ";
strSQL += m_userid;
strSQL += " and password like ";
strSQL += m_password;
//設m_Pwd及m_user分別為用戶名及口令的CEdit控件變量
m_Pwd.GetWindowText (szPwd,sizeof(szSvr));
m_user.GetWindowText (szUser,sizeof(szUser));
CString strSQL;
strSQL="SELECT * FROM users where user_id like '"+szUser +"%' And password Like '"+szPwd +"%'";HRESULT hr;
_ConnectionPtr mConn;
hr = mConn.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr)) hr = mConn->Open(連接字符串.......if(mConn->State)
{
_variant_t rt;
//不需要返回記錄集,
mConn->Execute ((_bstr_t)strSQL,&rt,adCmdText); //如果想取得返回記錄就加上pRs下面兩句
_RecordsetPtr pRs;
pRs.CreateInstance("ADODB.Recordset");
pRs=mConn->Execute ((_bstr_t)strSQL,&rt,adCmdText);
注:記錄只能通過while (pRs->adoeof)循環取得
記錄數不能通過pRs->RecordCount;取得
}
mConn->Close();
_CommandPtr pCommand;
_ParameterPtr pam1,pam2;
ParametersPtr pPars;
HRESULT hr;
hr=pCommand.CreateInstance("ADODB.Command");
pCommand->ActiveConnection=mConn;//mConn見上一個回復
pCommand->CommandType=adCmdText;
pCommand->CommandText("SELECT * FROM users WHERE user_id like ? And password Like ?"; //注意: 兩個?分別是要添加的參數pam1和pam2pam1=pCommand->CreateParameter("",adBSTR,asParamInput,0,szUser);
pam2=pCommand->CreateParameter("",adBSTR,asParamInput,0,szPwd);
pPars=pCommand->Parameters;
hr=pPars->Append(pam1);
hr=pPars->Append(pam2);_Variant vRow,vNull;
vNull.vt=VT_ERROR;
pRs=pCommand->Execute(&vRow,&vNull,adCmdText); //pRs見上一個回復
pCommand->CommandText = "SELECT * FROM users WHERE user_id like ? And password Like ?";