在MFC中与SQL数据库相关联的主要是两个类:CDatabase类与CRecordeset类。
1.将SQL中的字段显示在Clistctrl空间的列名中
m_gl.Open(CRecordset::dynaset);//打开ODBC连接的数据库
short nfilecount=m_gl.GetODBCFieldCount();//获取表中的字段数
CODBCFieldInfo fieldinfo;//用于存储字段信息
for(int n=0;n<nfilecount;n++)
{
m_gl.GetODBCFieldInfo(n,fieldinfo);//返回某一字段索引的字段信息 m_strName保存的是字段名
int nWidth=m_list.GetStringWidth(fieldinfo.m_strName)+15;//确定列头的显示长度
m_list.InsertColumn(n,fieldinfo.m_strName,LVCFMT_LEFT,nWidth);//在Clistctrl控件中插入列
}
CString strvalue;
m_gl.MoveFirst();
int ncount=0;
while(!m_gl.IsEOF())
{
m_list.InsertItem(ncount,strvalue);
//for(short j=0;j<nfilecount;j++)
//{
// m_gl.GetFieldValue(j,strvalue);//获取某个字段的信息
// m_list.SetItemText(ncount,j,strvalue);//在Clistctrl控件中写入数据
//}
CString m_ID;
m_ID.Format("%d",m_gl.m_ID);
m_list.SetItemText(ncount,0,m_ID);
m_list.SetItemText(ncount,1,m_gl.column1);
m_list.SetItemText(ncount,2,m_gl.column2);
m_list.SetItemText(ncount,3,m_gl.column3);
m_list.SetItemText(ncount,4,m_gl.column4);
m_list.SetItemText(ncount,5,m_gl.column4);
m_gl.MoveNext();
ncount++;
}
m_gl.Close();
m_db.Close();
2.删除表中的某一行:
int nIdxingdb=nIdx1+1;
m_gl.Open (CRecordset::dynaset);//打开数据库
m_gl.SetAbsolutePosition(nIdxingdb);//设置数据库的记录位置
m_gl.Delete();//删除记录
m_gl.Close();
3.增加到记录中一行:
m_gl.AddNew();
m_gl.SetFieldNull(NULL,false);
m_gl.column1 = r.Name;
m_gl.column5 = r.Photo;
m_gl.column2 = r.Depart;
m_gl.column3 =r.IsIntern;
m_gl.column4=r.Phone;
m_gl.Update();
m_gl.Requery();
m_gl.MoveFirst();