MFC sqlserver等操作

来源:互联网 发布:qq群推广淘宝店 编辑:程序博客网 时间:2024/05/18 03:15

////////////////获得字段数

mStrSQL = "SELECT * FROM T_Student";
m_pRecordset->Open(mStrSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
hr = m_pRecordset->get_Fields(&fields); //得到记录集的字段集和 
_variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset->GetCollect(vIndex);
count = vCount.lVal;

if (SUCCEEDED(hr))
fields->get_Count(&ColCount);//得到记录集的字段集合中的字段的总个数ColCount 就是几列
/////把数据库中字段名写进listcontrol
for (i = 0; i < ColCount; i++)//i一定要是long型的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
fields->Item[i]->get_Name(&bstrColName); //得到记录集//中的字段名 
strColName = bstrColName;
nameField = strColName;
//m_listSerialCsvData.SetItemText(count, ColCount, nameField);    //AddString(nameField);m_listSerialCsvData.SetItemText(i, j, wstTmp.c_str());
m_listSerialCsvData.InsertColumn(i, nameField, LVCFMT_LEFT, 80);//表头
}

/////获取记录数

mStrSQL2 = "SELECT * FROM T_Student";
/*m_pRecordset->Execute(mStrSQL2,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);*/////上面已经打开了数据库,这里就只能执行了 不能多次开打 除非在关闭之后!
_variant_t RecordsAffected;
m_pRecordset = m_pConnection->Execute(mStrSQL2, &RecordsAffected, adCmdText);
_variant_t vIndex2 = (long)0;
_variant_t vCount2 = m_pRecordset->GetCollect(vIndex2);
count2 = vCount2.lVal;

////////////////////////取出数据库数据放到listcontrol中;ColCount是字段数

CString strValue;
try
{
while (!m_pRecordset->adoEOF)
{
strValue = "";
m_listSerialCsvData.InsertItem(m_listSerialCsvData.GetItemCount(),strValue);
for (int i = 0; i < ColCount; i++)
{
_variant_t var = m_pRecordset->GetCollect(_variant_t((long)i));
if (var.vt != VT_NULL)
{
strValue = (LPCTSTR)_bstr_t(var);
m_listSerialCsvData.SetItemText(m_listSerialCsvData.GetItemCount()-1, i, strValue);


}
}
m_pRecordset->MoveNext();
}

}
catch (_com_error &e)
{
AfxMessageBox(e.Description());
}



//mStrSQL2 = "SELECT * FROM T_Student";
///*m_pRecordset->Execute(mStrSQL2,
// m_pConnection.GetInterfacePtr(),
// adOpenDynamic,
// adLockOptimistic,
// adCmdText);*/////上面已经打开了数据库,这里就只能执行了 不能多次开打 除非在关闭之后!
//_variant_t RecordsAffected;
//m_pRecordset = m_pConnection->Execute(mStrSQL2, &RecordsAffected, adCmdText);


//_variant_t vIndex = (long)0;
//_variant_t vCount = m_pRecordset->GetCollect(vIndex);
//count = vCount.lVal;
















0 0
原创粉丝点击