您的位置:首页 > 数据库

MFC 中ADO方式操作ACCESS数据库

2010-08-31 23:27 441 查看
1 基本实现流程:

(1)初始化COM库,引入ADO库定义文件

  (2)用Connection对象连接数据库

  (3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。

  (4)使用完毕后关闭连接释放对象。

2 部分代码参考

CAdoData::CAdoData()
{

if(!AfxOleInit())
{
AfxMessageBox("AfxOleInit error ");
}
HRESULT res = m_pCon.CreateInstance(__uuidof(Connection));
}

CAdoData::~CAdoData()
{

}

int CAdoData::LoginCheck()   //登陆检查
{

if(!m_pCon->State)
{
AfxMessageBox("未连接");
return -2;
}

_bstr_t sql = "select * from UserTable";

try
{
//_variant_t
VARIANT var;
var.vt = VT_I4;

_RecordsetPtr pSet;
pSet = m_pCon->Execute(sql,&var,adCmdText);

_variant_t val;

while(!pSet->adoEOF)
{
val = pSet->GetCollect("id");

//if(val.vt == VT_I4)
long id = (long)val;

val = pSet->GetCollect((long)1);
CString name = (char*)(_bstr_t)val;

val = pSet->GetCollect((long)1);
CString pwd = (char*)(_bstr_t)val;

if(strcmp(name,infomation.username)==0 && strcmp(pwd,infomation.password)==0)
{
return -1;
}
pSet->MoveNext();

}

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

void CAdoData::OnConnect()   //连接
{
if (m_pCon->State)
{
AfxMessageBox("已连接数据库");
return ;
}

try{

_bstr_t szCon = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = server.mdb";

HRESULT	res = m_pCon->Open(szCon, "","",adModeUnknown);

}
catch(_com_error err)
{
CString errormessage;
errormessage.Format("连接数据库失败,失败信息:%s", err.ErrorMessage());
AfxMessageBox(err.ErrorMessage());
}

}

void CAdoData::OnInsert()   //插入数据库
{

if(!m_pCon->State)
{
AfxMessageBox("未连接");
return;
}

char username[20]={0};
char password[20]={0};
char sex[4]={0};
char birth[15]={0};
CString str;

//str.Format("%s",birth)
strcpy(username, infomation.username);
strcpy(password, infomation.password);
strcpy(sex, infomation.sex);
strcpy(birth, infomation.birth);

CString sql;
sql.Format("insert into UserTable(用户名,密码,性别,生日)values('%s','%s', '%s', '%s')", username,password,sex,birth);

try
{
VARIANT var;
var.vt = VT_I4;

m_pCon->Execute((_bstr_t)sql,&var,adCmdText);

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

}

}

void CAdoData::OnClose()  //关闭数据库
{

if(m_pCon->State)
{

m_pCon->Close();
}
}

void CAdoData::OnSerchRank()   //查询积分
{
if(!m_pCon->State)
{
AfxMessageBox("未连接");
return;
}

_bstr_t sql = "select * from RankTable";

try
{
//_variant_t
VARIANT var;
var.vt = VT_I4;

_RecordsetPtr pSet;
pSet = m_pCon->Execute(sql,&var,adCmdText);

_variant_t val;

while(!pSet->adoEOF)
{
val = pSet->GetCollect("id");

//if(val.vt == VT_I4)
long id = (long)val;

val = pSet->GetCollect((long)1);
CString name = (char*)(_bstr_t)val;

val = pSet->GetCollect((long)1);
long score = (long)val;

pSet->MoveNext();

}

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

}


有不足的地方欢迎指出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: