_CommandPtr等 的意义?
在用ADO来进行数据库操作的时候,
看到要用到一些
_ParameterPtr,_CommandPtr,_RecordsetPtr,_ConnectionPtr
这几个类, 一直搞不清他们的意义和使用方法。
我们要怎么来使用他们, 他们又有哪些使用功能呢?
希望各位大大给解析,解析一下, 谢谢@
------解决方案--------------------单从这几个单词也能猜个差不多
_ParameterPtr,--是sql语句中的参数
_CommandPtr,--是要提交的sql查询字符串
_RecordsetPtr,--是查询返回的结果
_ConnectionPtr --是连接
似乎上面的都是指针类型。。。
------解决方案--------------------_ConnectionPtr链接集链接即打开数据库
m_SqlConnection.CreateInstance("ADODB.Connection");
// strWay="driver={SQL Server};Server=" + sqlname + ";DATABASE=MyDataBase;UID=" + sqluser + ";PWD=" + sqlpass;
strWay="driver={SQL Server};Server=" + sqlname + ";DATABASE=调度信息库";
m_SqlConnection->ConnectionTimeout = 10;//设置超时时间为10秒
m_SqlConnection->CursorLocation = adUseClient;
m_SqlConnection->Open((_bstr_t)strWay,(_bstr_t)sqluser,(_bstr_t)sqlpass,adModeUnknown);
_RecordsetPtr 记录集打开数据表(中的记录)
m_SqlRecordset.CreateInstance("ADODB.Recordset");
m_SqlRecordset->Open((_variant_t)("SELECT * FROM 城市表 WHERE 省份='"+str+"' AND 城市 IS NOT NULL"),
(IDispatch*)m_SqlConnection,
adOpenStatic,
adLockOptimistic,
adCmdText);
_CommandPtr 命令集打开数据表即执行命令
m_pCommand.CreateInstance("ADODB.Command");
m_pCommand->ActiveConnection = m_SqlConnection;
m_pCommand->CommandType=adCmdText;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;
sprintf(buf,"DELETE FROM 接收短信 WHERE ID=%d",index);
m_pCommand->CommandText=buf; //命令字串。
m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///执行命令。
_ParameterPtr 参数集主要用于存储过程
_ParameterPtr param;
param=m_pCommand->CreateParameter(_bstr_t("@user"),adVarChar,adParamInput,20);
param->Value=_variant_t(logname);.
m_pCommand->Parameters->Append(param);
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;
m_pCommand->Execute(&vNULL,&vNULL,adCmdStoredProc);
建议用属性更简单
m_pCommand->Parameters->Refresh();
m_pCommand->Parameters->Item["@user"]->Value=_variant_t(logname);
m_pCommand->Parameters->Item["@operation"]->Value=_variant_t(operation);
m_pCommand->Parameters->Item["@oper_type"]->Value=_variant_t(oper_type);
再如:
//四种操作字段的写入方法
m_pRecordset->Collect["名称"] = _variant_t(m_strName);
// m_pRecordset->Fields->Item["名称"]->Value = _variant_t(m_strName);
// m_pRecordset->PutCollect("名称", _variant_t(m_strName));
// m_pRecordset->GetFields()->GetItem("名称")->PutValue(_variant_t(m_strName));
//四种操作字段的读取方法
m_cmbCity.AddString((_bstr_t)m_SqlRecordset->Collect["城市"]);
// m_cmbCity.AddString((_bstr_t)m_SqlRecordset->Fields->Item["城市"]->Value);
// m_cmbCity.AddString((_bstr_t)m_SqlRecordset->GetCollect("城市"));
// m_cmbCity.AddString((_bstr_t)m_SqlRecordset->GetFields()->GetItem("城市")->GetValue());
------解决方案-------------------- m_SqlRecordset.CreateInstance("ADODB.Recordset");
m_SqlRecordset->CursorLocation = adUseClient;
m_SqlRecordset->Open(_variant_t(str),
_variant_t((IDispatch*)m_SqlConnection),
adOpenStatic,
adLockOptimistic,
adCmdText)