回复:level1979(岳麓飘湘) ※ 信誉:100 ※ 2006-5-16 14:43:08 ※ 得分:0
网上找的例子:
CRecordset rec(&m_dbConn);
BOOL fOK = rec.Open(CRecordset::forwardOnly,"select loc_id from table1 order by loc_id");
CString szResult;
while(!rec.IsEOF())
{
rec.GetFieldValue((int)0,szResult);(int)0 是rs里面字段的排位
rec.MoveNext();
TRACE("fetch : %s/n",szResult);
}
}
回复:yu198445() ※ 信誉:100 ※ 2006-5-16 18:19:59 ※ 得分:0
怎么把值赋给数组阿
回复:podded(阿朱) ※ 信誉:105 ※ 2006-5-16 20:56:02 ※ 得分:0
借用楼上的例子:
int i = 0;
szResult此处改为动态数组,根据记录集中个数或需要取的记录个数定义数组
while(!rec.IsEOF())
{
rec.GetFieldValue((int)0,szResult[i]);
rec.MoveNext();
i++;
}
这样即把相关字段写入了数组中.
回复:yu198445() ※ 信誉:100 ※ 2006-5-16 23:49:48 ※ 得分:0
CRecordset::GetFieldValue(const char *,class CDBVariant &,short)
好像不行吧
回复:yu198445() ※ 信誉:100 ※ 2006-5-16 23:51:26 ※ 得分:0
void CYuirView::read()
{
if(!m_database.IsOpen())
{
m_database.Open(_T("featurebase"));
}
CYuirSet m_recordset(&m_database);
CString strSQL;
memset(m_hist,0,sizeof(m_hist));
strSQL.Format("select * from hist");
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
CDBVariant varValue;
if(m_recordset.GetRecordCount()!=0) m_recordset.MoveFirst();
short nFields = m_recordset.GetODBCFieldCount( );
int j=0;
while(!m_recordset.IsEOF())
{
for(int i=0;i<nFields;i++)
{
m_recordset.GetFieldValue(i,m_hist[j][i]);
//m_ListCon.SetItemText(j,i,varValue.m_pstring->GetBuffer(i));
m_hist[j][i]=(long)varValue.m_pstring->GetBuffer(i);
}
m_recordset.MoveNext();
}
m_recordset.Close( );
m_database.Close( );
}