MFC创建的是“基本对话框”的工程,需要调用数据库的数据,但是不知道怎么操作。 建立完ODBC数据源也不行
在其中一个对话框中我建立了2个edit框和1个按钮而数据库的列名为:“编号”、“名称”。我想实现的功能是在edit1框中输入一个数字编号点按钮然后在edit2框中显示数据...
在其中一个对话框中 我建立了2个edit框和1个按钮 而数据库的列名为:“编号”、“名称”。
我想实现的功能是在edit1框中输入一个数字编号 点按钮 然后在edit2框中显示数据库中对应编号的名称。
不想用单文档、多文档的方式。
初学mfc 会的东西不多 希望能给出较为详细的回答。
小弟在此先谢过各位!谢谢!
ps:数据库是access的 展开
我想实现的功能是在edit1框中输入一个数字编号 点按钮 然后在edit2框中显示数据库中对应编号的名称。
不想用单文档、多文档的方式。
初学mfc 会的东西不多 希望能给出较为详细的回答。
小弟在此先谢过各位!谢谢!
ps:数据库是access的 展开
2个回答
展开全部
在StdAfx.h 中加上
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
在h文件中定义
_ConnectionPtr cn;
_RecordsetPtr rs;
然后在你的cpp文件中,比如OnInitDialog中调用::CoInitialize(NULL);
然后在你的读取函数中
cn.CreateInstance(__uuidof(Connection));
rs.CreateInstance(__uuidof(Recordset));
CString strJet = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\数据库.mdb";
cn->Open(strJet.AllocSysString(),_T("admin"),_T(""),-1);
String sql = ("select 编号,名称 from 你的表 where 编号=" + 文本框输入的值;
rs->Open(sql.AllocSysString(), cn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,-1);
然后把 (LPCSTR)(_bstr_t)rs_server->GetCollect("名称")绑定到你的显示文本框变量,再更新窗体就显示了,这里rs是公用的,记得使用完毕关闭rs->Close();,或者在使用前查询状态if ( adStateOpen == rs->State ) rs_mdb->Close();,已打开的要先关闭,最后查询完毕关闭cn连接。
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
在h文件中定义
_ConnectionPtr cn;
_RecordsetPtr rs;
然后在你的cpp文件中,比如OnInitDialog中调用::CoInitialize(NULL);
然后在你的读取函数中
cn.CreateInstance(__uuidof(Connection));
rs.CreateInstance(__uuidof(Recordset));
CString strJet = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\数据库.mdb";
cn->Open(strJet.AllocSysString(),_T("admin"),_T(""),-1);
String sql = ("select 编号,名称 from 你的表 where 编号=" + 文本框输入的值;
rs->Open(sql.AllocSysString(), cn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,-1);
然后把 (LPCSTR)(_bstr_t)rs_server->GetCollect("名称")绑定到你的显示文本框变量,再更新窗体就显示了,这里rs是公用的,记得使用完毕关闭rs->Close();,或者在使用前查询状态if ( adStateOpen == rs->State ) rs_mdb->Close();,已打开的要先关闭,最后查询完毕关闭cn连接。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询