Home  >  Article  >  Database  >  ODBC连接Access数据库图文全解之利用VC

ODBC连接Access数据库图文全解之利用VC

WBOY
WBOYOriginal
2016-06-07 15:30:501764browse

转自:http://www.cosdiv.com/page/M0/S564/564927.html 现在我们就开始介绍 VC 如何通过 ODBC 数据源来 连接 Access 数据库 的过程:包括从数据源的创建到VC代码的实现。 1.首先在控制面板中,打开ODBC数据源,点击用户DSN选项,在出现的界面中点击添加,如

转自: http://www.cosdiv.com/page/M0/S564/564927.html

现在我们就开始介绍VC如何通过ODBC数据源来连接Access数据库的过程:包括从数据源的创建到VC代码的实现。


1.首先在控制面板中,打开ODBC数据源,点击用户DSN选项,在出现的界面中点击添加,如下图所示:



然后,点击完成按钮,出现下图,填入数据源名(可随意取名,本处设为biao)。



点击确定即可。


2.在ACCESS中创建数据库,本例中为data(只包含 number,name,score三列),可从我提供的这个例子下COPY。


3.建立应用程序项目


(1)打 开File 菜 单 的New 选 项, 选 取Projects,选择MFC AppWizard (exe),填 入 工 程 名,本例为DATA1。


(2)把数据库文件 data拷入新建的工程目录。


(3)应用程序的类型指定为SDI,在Step2 对话框中选择Header Files Only选项,在Step6是将视图基类指定为CScrollView。


(4)用ClassWizard 创建记录集类。从Add Class菜单中选择New,并按下图填充对话框:(说明:一个CRecordset对象代表从数据源中查询的一个记录集。)



(5)点击OK,进入Data Source,选择biao数据源,并选择Dynast选项,如下图所示:



在选择了数据源之后,ClassWizard提示我们选择一个表。如下图所示:



(6)在ClassWizard中,针对新产生的CDataSet类,单击Member Variables标签。此时ClassWizard 应按照数据库列的名称产生了如下的数据成员:



(7)在CData1View类中添加数据成员。



(8) 在Cdata1Doc中添加如下成员:



(9)编辑DATA1View.cpp中的OnDraw() 和OnInitialUpdate()函数:


<ol class="dp-xml">
<li class="alt">void CDATA1View::OnDraw(CDC* pDC)  </li>
<li> </li>
<li class="alt">{  </li>
<li> </li>
<li class="alt">CDATA1Doc* <span class="attribute">pDoc</span> = <span class="attribute-value">GetDocument</span>();  </li>
<li> </li>
<li class="alt">ASSERT_VALID(pDoc);  </li>
<li> </li>
<li class="alt">// TODO: add draw code for native data here  </li>
<li> </li>
<li class="alt">TEXTMETRIC tm;  </li>
<li> </li>
<li class="alt">pDC-<span class="tag">></span>GetTextMetrics(&tm);  </li>
<li> </li>
<li class="alt">int <span class="attribute">nLineHeight</span>=<span class="attribute-value">tm</span>.tmHeight+tm.tmExternalLeading;  </li>
<li> </li>
<li class="alt">CPoint pText(0,0);  </li>
<li> </li>
<li class="alt">int <span class="attribute">y</span> = <span class="attribute-value">0</span>;  </li>
<li> </li>
<li class="alt">CString str;  </li>
<li> </li>
<li class="alt">if (m_pSet-<span class="tag">></span>IsBOF()) { // detects empty recordset  </li>
<li> </li>
<li class="alt">return;  </li>
<li> </li>
<li class="alt">}  </li>
<li> </li>
<li class="alt">m_pSet-<span class="tag">></span>MoveFirst(); // fails if recordset is empty  </li>
<li> </li>
<li class="alt">while (!m_pSet-<span class="tag">></span>IsEOF()) {  </li>
<li> </li>
<li class="alt">pDC-<span class="tag">></span>TextOut(pText.x, pText.y, m_pSet-<span class="tag">></span>m_number);  </li>
<li> </li>
<li class="alt">pDC-<span class="tag">></span>TextOut(pText.x+1000, pText.y, m_pSet-<span class="tag">></span>m_name);  </li>
<li> </li>
<li class="alt">pDC-<span class="tag">></span>TextOut(pText.x+4000, pText.y, m_pSet-<span class="tag">></span>m_score);  </li>
<li> </li>
<li class="alt">m_pSet-<span class="tag">></span>MoveNext();  </li>
<li> </li>
<li class="alt">pText.y <span class="attribute">-</span>= <span class="attribute-value">nLineHeight</span>;  </li>
<li> </li>
<li class="alt">}  </li>
<li> </li>
<li class="alt">}  </li>
<li> </li>
<li class="alt">void CDATA1View::OnInitialUpdate()  </li>
<li> </li>
<li class="alt">{  </li>
<li> </li>
<li class="alt">CScrollView::OnInitialUpdate();  </li>
<li> </li>
<li class="alt">CSize sizeTotal(8000, 10500);  </li>
<li> </li>
<li class="alt">SetScrollSizes(MM_HIENGLISH, sizeTotal);  </li>
<li> </li>
<li class="alt">
<span class="attribute">m_pSet</span> = &GetDocument()-<span class="tag">></span>m_dataSet;  </li>
<li> </li>
<li class="alt">if (m_pSet-<span class="tag">></span>IsOpen()) {  </li>
<li> </li>
<li class="alt">m_pSet-<span class="tag">></span>Close();  </li>
<li> </li>
<li class="alt">}  </li>
<li> </li>
<li class="alt">m_pSet-<span class="tag">></span>Open();  </li>
<li> </li>
<li class="alt">} </li>
</ol>

(10)data1View.cpp 中加入#include "dataSet.h"。


(11)编译结果应如下所示:




Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn