用vc读取数据库的字段值,保存在数组里

来源:互联网 发布:比较好的网络推广平台 编辑:程序博客网 时间:2024/04/29 11:58
 

回复: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( );
}

原创粉丝点击