首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

_CommandPtr等 的意义?解决思路

2012-06-13 
_CommandPtr等 的意义?在用ADO来进行数据库操作的时候,看到要用到一些_ParameterPtr,_CommandPtr,_Records

_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);


CString strFind;
strFind.Format("主叫号码 = %s", m_strCheck);
strFind.Format("主叫号码 LIKE \'%%%s%%\'", m_strCheck);
m_SqlRecordset->Fields->Item["主叫号码"]->Properties->Item["Optimize"]->Value= "True";
m_SqlRecordset->Find((_bstr_t)strFind,1,adSearchForward);

[解决办法]
路过 帮顶

热点排行