odbc连接数据库,及ado连接数据库
odbc连接数据库
做之前先把sql server的服务打开。
1. 这种连接方式先要配置一个数据源。
打开控制面板—管理工具—数据源(odbc)—添加 选择第一个,点完成。
名称就命名为school吧(我已经创了一个school的所以这里填的school1),服务器填(local)。
下一步,再下一步。
把默认的master数据库改成school。
下一步,完成,然后测试一下连接。测试成功之后这个数据源就有了。
打开vs2013,新建一个项目。
选择MFC应用程序名称自己取,或者默认。确定。
选择应用程序类型,单个文档~
数据库支持选择“提供文件支持的数据库视图”,ODBC。
选择机器数据源中你刚刚配置的那个数据源。确定。
再确定。
选择到
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
Student之后,点确定。
这个MFC的程序就创建好了,接下来开始写。。
点击资源视图(在左下角或者你的风格被安排在右下角)
选择含有你创建的那个名称的IDD_XXXXXX,双击一下。
出现了上面那个东西。
在视图里面,把工具箱点出来。
在那上面画一个按钮(BUTTON),一个ListBOX
在你画好的图上右击—类向导—成员变量
选中那个ListBox对应的名字,添加变量。
取个变量名m_list,一会儿我要把查到的东西在这个listbox控件里面输出。
双击那个按钮
就可以给这个按钮添加函数啦~
加入如下代码
while (!m_pSet->IsEOF()) { CString a (m_pSet->m_SNO); CString
b( m_pSet->m_SNAME); if (m_pSet->m_SDEPT == "信息系") { m_list.AddString(a+"------"+b); } m_pSet->MoveNext();
}
m_pSet 的这些操作相当于把Student表的数据放到了一个链表里,m_pSet->MoveNext()就是指向下条位置。
!m_pSet->IsEOF()的意思就是不指到最后时,加上while就相当于遍历这个Student表了。
m_pSet->m_SNO即代表了SNO的值。因为取出来是CStringA格式,为了能用那个ListBOX输出我就用a,b,来接收他们,a,b是CString格式,就可以在那个LIstBOX里面输出了
m_list.AddString()是那个控件输出的格式。(我之前的代码里还取了int型的SAGE,但是int转成CString的代码有点烦,这里就不写了)
运行吧~~
这时候会出现一个问题。
把那句#error。。。。。删掉就ok了。
2. ado连接数据库
这个代码比odbc多点,但是用不到那个数据源。 还是像之前那样新建一个MFC项目,但是不同的是,这次不是选单文档,而是选对话框,所以数据库那边也自动是灰色的不要点。
直接完成就ok了
1. 那个按钮,跟LISTBOX也照样画好,添加变量名m_list。
2. 选择解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
资源管理器。选择头文件。双击stdafx.h
添加如下代码,一开始那个#import那边可能有红线,但是你等一等,或者先运行一下,就好了。这句代码加了之后,我们才能用到后面的两个接口。
#import "C:\Program Files\Common
Files\System\ADO\msado15.dll" no_namespace
rename("EOF", "EndOfFile")
#include <icrsint.h>
在你那个MFCXX.cpp中找到这个InitInstance()函数
在图上的位置加上(也是后面要用到的)AfxOleInit();//这就是初始化COM库
之后找到头文件MFCXXDlg.h
在public里面添加如下代码 _ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset; _variant_t vsno, vsname, vsage;
前面两个是对数据库操作的两个接口,后面那三个_variant类型的变量是用来接收数据库中的数据的。
Ok,双击下那个按钮,添加如下代码。 CString csno, csname, csage;
m_pConnection.CreateInstance(__uuidof(Connection)); try { } catch (_com_error e) { }
m_pRecordset.CreateInstance(__uuidof(Recordset)); try AfxMessageBox(_T("数据库连接
失败!")); m_pConnection->Open("driver={SQL Server}; "", "", adModeUnknown);
Server=(local);Database=school;UID="";PWD=""",
{ } catch (_com_error *e) { } while (m_pRecordset->EndOfFile == VARIANT_FALSE ) { } vsno = m_pRecordset->GetCollect("SNO"); csno = vsno; vsname =
m_pRecordset->GetCollect("SNAME"); csname = vsname; vsage = m_pRecordset->GetCollect("SAGE"); csage = vsage; m_list.AddString(csno+"-----"+csname+"----"+csage); m_pRecordset->MoveNext(); AfxMessageBox(e->ErrorMessage()); m_pRecordset->Open("SELECT SNO,SNAME,SAGE FROM Student WHERE SDEPT=‘信息
系’",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_pConnection->Open("driver={SQL Server};
Server=(local);Database=school;UID="";PWD=""", "", "", adModeUnknown);
这句代码的作用是连接school数据库,UID,PWD是账号密码,这里不要填,因为默认
连接的(local)服务器。
m_pConnection.CreateInstance(__uuidof(Connection));
这句代码我也不太懂,感觉是建立一个连接之类的。
m_pRecordset->Open("SELECT SNO,SNAME,SAGE FROM Student WHERE SDEPT=‘信息
系’",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
这句的意思是打开表中的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
,我那边写了个查询语句,就是打开所
有信息系同学的SNO,SNAME,SAGE。每有一个符合条件的就形成一条记录。
CString csno, csname, csage;
我定义的这三个变量是为了csno = vsno;,把_variant 格式的转成CString格式的,便于用
listbox输出。
vsno = m_pRecordset->GetCollect("SNO");
这个就是获取这一条记录中SNO的数据
m_pRecordset->MoveNext();
移到下一条记录
While(~。。。)
{
}这是个遍历这些记录的循环。
END o(???)o