我借鉴了网上的ADO的封装方法,封装了关于数据库的查询方法如下:
BOOL CDBManager::Query(CString sql, CObList& result)
{
BOOL flag = TRUE;
::CoInitialize(NULL);
_ConnectionPtr m_pConnection = NULL;
_RecordsetPtr m_pRecordset = NULL;
try
{
HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection));//创建连接实例
_bstr_t strConnect= m_dbstr;//"Provider=SQLOLEDB;Server=192.168.1.64;Database=mserver; uid=mserver; pwd=mserver;"; m_pConnection->Open(strConnect,L"",L"",adModeUnknown);//打开连接
if(m_pConnection==NULL)
return FALSE;
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open("select * from T_Mediaserver",m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText); int columnsSize = m_pRecordset->Fields->GetCount(); while (!m_pRecordset->EndOfFile)
{
result.AddTail(new CMapStringToString);
for(int j = 0; j < columnsSize; j++)
{
FieldPtr fPtr = m_pRecordset->Fields->GetItem((long)j);
_variant_t vName = fPtr->Name;
_variant_t vValue = fPtr->Value;
CString name((WCHAR*)(_bstr_t)vName);
CString value = _T("");
if(vValue.vt != VT_NULL)
value.Format(_T("%s"),(WCHAR*)(_bstr_t)vValue);
((CMapStringToString*)result.GetTail())->SetAt(name,value);
}
m_pRecordset->MoveNext(); ///移到下一条记录
}
m_pRecordset->Close(); // 关闭记录集
}
catch(_com_error e)
{
flag = FALSE;
}
if(m_pRecordset->State)
m_pRecordset->Close();
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize(); return flag;
}
那么,我要在程序中怎么查询,并利用查询的结果?
比如,我要在一个名为Kvalue的表中查询一条ID为001的数据,并要把查到的这条记录中的各项分别显示到四个Edit编辑框中
具体应该怎么写 ,怎么操作?
我看了MSDN半天也没太搞懂coblist这东西。
BOOL CDBManager::Query(CString sql, CObList& result)
{
BOOL flag = TRUE;
::CoInitialize(NULL);
_ConnectionPtr m_pConnection = NULL;
_RecordsetPtr m_pRecordset = NULL;
try
{
HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection));//创建连接实例
_bstr_t strConnect= m_dbstr;//"Provider=SQLOLEDB;Server=192.168.1.64;Database=mserver; uid=mserver; pwd=mserver;"; m_pConnection->Open(strConnect,L"",L"",adModeUnknown);//打开连接
if(m_pConnection==NULL)
return FALSE;
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open("select * from T_Mediaserver",m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText); int columnsSize = m_pRecordset->Fields->GetCount(); while (!m_pRecordset->EndOfFile)
{
result.AddTail(new CMapStringToString);
for(int j = 0; j < columnsSize; j++)
{
FieldPtr fPtr = m_pRecordset->Fields->GetItem((long)j);
_variant_t vName = fPtr->Name;
_variant_t vValue = fPtr->Value;
CString name((WCHAR*)(_bstr_t)vName);
CString value = _T("");
if(vValue.vt != VT_NULL)
value.Format(_T("%s"),(WCHAR*)(_bstr_t)vValue);
((CMapStringToString*)result.GetTail())->SetAt(name,value);
}
m_pRecordset->MoveNext(); ///移到下一条记录
}
m_pRecordset->Close(); // 关闭记录集
}
catch(_com_error e)
{
flag = FALSE;
}
if(m_pRecordset->State)
m_pRecordset->Close();
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize(); return flag;
}
那么,我要在程序中怎么查询,并利用查询的结果?
比如,我要在一个名为Kvalue的表中查询一条ID为001的数据,并要把查到的这条记录中的各项分别显示到四个Edit编辑框中
具体应该怎么写 ,怎么操作?
我看了MSDN半天也没太搞懂coblist这东西。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货