代码_ADO_查询数据

1.在StdAfx.h最后面增加

#include<ICRSINT.H>
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")

2.在***App Class中InitinStance事件中添加

	if(!AfxOleInit())
	{
		AfxMessageBox("OLE初始化出错!");
		return FALSE;
	}
注意:添加时位置最好在紧接AfxEnableControlContainer()之后

3.在OnButton事件中添加

//查询功能
void CDATABASE_ADO_TESTDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	m_strName="";
	m_strMajor="";
	m_strSex="";
	m_iAge=20;
	UpdateData(FALSE);
	if(m_strID==0)
	{
		MessageBox("输入ID不能为空!");
		return;
	}
	//创建结果集实例
	_RecordsetPtr pRS;
	if(FAILED(pRS.CreateInstance("ADODB.Recordset")))
	{
		AfxMessageBox("Create Instance failed");
		return;
	}
	//创建SQL查询语句
	CString strSRC=GetConnStr();
	CString strSQL;
	strSQL.Format("select * from Student where StudentID=%d",m_strID);
	//打开数据库,ADO::Open(sql语句,数据库路径,光标类型<常量>,锁定类型,sql类型),在文章最后各常量都有列举
	if(FAILED(pRS->Open((_variant_t)strSQL,(_variant_t)strSRC,adOpenStatic,adLockOptimistic,adCmdText)))
	{
		AfxMessageBox("Can not open Database!");
		pRS->Release();
		return;
	}
	//历遍所有结果集记录
	while(!pRS->rsEOF)
	{
		_variant_t varName;
		varName=pRS->GetCollect("Name");
		m_strName=(char *)_bstr_t(varName);
		varName=pRS->GetCollect("Sex");
		m_strSex=(char *)_bstr_t(varName);
		varName=pRS->GetCollect("Major");
		m_strMajor=(char *)_bstr_t(varName);
		varName=pRS->GetCollect("Age");
		m_iAge=atoi((char *)_bstr_t(varName));
		pRS->MoveNext();
	}
	//更新数据
	UpdateData(FALSE);
	pRS.Release();
}

注意:1.pRS.Release使用的是释放单元内存,而不是->,

创建实例的时候使用'.',而不是用->

2.如果无法打开,或报错,请使用

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

进行调试

3.代码中用到的(_variant_t)是将任意变量转换为最合适的类型

4.ADO的光标类型,ADO的锁定类型,ADO的光标服务位置等定义,请参见

常量定义_ADO光标类型,锁定类型,光标服务位置


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值