ADO查表中数据,菜鸟

2017-05-06 02:26
数据库是access数据库,在mfc项目下
_CommandPtr     m_ptrCommand;       //命令对象  
_RecordsetPtr   m_ptrRecordset;     //记录集对象  
_ConnectionPtr  m_ptrConnection;    //数据库对象 
_RecordsetPtr   m_pRecordset;     //记录集对象  

数据库也连接成功了,
m_pRecordset.CreateInstance(__uuidof(Recordset));

m_pRecordset->Open("SELECT * FROM demo",                // 查询表中所有字段
theApp.m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
现在比如说有一个学生表,如何通过学号查找到这个学生的姓名,然后把它返回到一个变量里()??

在网上查了好多方法,我太笨了,都不好使,求大神指教

回复讨论(解决方案)

select name from students where no=12
搜“MFC ADO”
老师,那个查询语句我知道,主要是如何使用sql语句

m_ptrCommand->CommandText = "SELECT Name FROM DemoWHERE Id=16;";
m_pRecordset = m_ptrCommand->Execute(NULL, NULL, adCmdText);
var=m_pRecordset->GetCollect("Name");
if (var.vt != VT_NULL)
str_mName.Format("%d",(LPCSTR)_bstr_t(var));
看了网上的教程之后自己试的,但是失败了
"SELECT Name FROM DemoWHERE Id='16' ";

是不是你的ID字段是字符串类型的,可以用 ADO助手试试你的数据库连接字符串和SQL语句。
加断点看你在哪里失败的  你调试下撒  看看sql语句执行的返回结果
编译是通过的,但是执行到第一句时就中断了
解决了,确实是个学习的过程。谢谢大家
if (m_pRecordset != NULL) m_pRecordset->Close();//先关闭原来的
	CString strSql;
	strSql = "SELECT * FROM demowhere Id=";
	strSql = strSql + "'" + str_mId + "'";
try{
		m_pRecordset->Open(_variant_t(strSql),         // 查询表
			theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
			adOpenDynamic,
			adLockOptimistic,
			adCmdText);
	}catch。。。。。。。。。。
if (!m_pRecordset->BOF){
		_variant_t var;
		var = m_pRecordset->GetCollect("Name");
		if (var.vt != VT_NULL)
			str_mName = (LPCSTR)_bstr_t(var);
		UpdateData(false);
	}