教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 文秘资料 >

在VC++6.0中使用ODBC连接数据库

来源:网络收集 时间:2026-06-08
导读: 在VC++6.0中使用ODBC连接数据库 在VC++6.0中使用ODBC连接数据库(一) 一、建立数据源 进入控制面板,点击【管理工具】,进入管理工具后点击【数据源(ODBC)】打开如图1的窗口,从图中的【用户DSN】可以看到我们自己添加的数据源如ClassAffairManageDSN、Data

在VC++6.0中使用ODBC连接数据库

在VC++6.0中使用ODBC连接数据库(一)

一、建立数据源

进入控制面板,点击【管理工具】,进入管理工具后点击【数据源(ODBC)】打开如图1的窗口,从图中的【用户DSN】可以看到我们自己添加的数据源如ClassAffairManageDSN、DataDSN等。

图1 ODBC数据源管理器

在【用户DSN】标签页的右上方有三个按钮,分别是【添加(D) 】、【删除(R)】、【配置(C) 】,对应功能分别如下:

【添加(D) 】:添加用户自定义新的数据源。

【删除(R)】:选择某个数据源后,点击它可以删除选中的数据源。 【配置(C) 】:选择某个数据源后,点击它可与对选中的数据源重新配置。 点击【添加(D) 】,弹出创建新数据源的窗口,进入创建新数据源的向导,如图2所示

在VC++6.0中使用ODBC连接数据库

图2 创建新数据源

列表框中显示的是在自己的电脑上安装的所有ODBC数据源驱动。以创建SQL Server2000中的Northwind数据库的数据源为例,选择SQL Server数据库的驱动器,点击【完成】弹出“创建的SQL Server 的新数据源”窗口,在“名称”对应的编辑框中输入新创建的数据源的名称“NorthwindDSN”,“描述”可写可不写,“服务器”填写数据源所在的服务器,如果在本机创建则可输入“(local)”。如图3所示。

图3 创建新数据源第一步:设置数据源名称和服务器

点击【下一步】进入下一步的设置中,如图4所示:

在VC++6.0中使用ODBC连接数据库

图4

可以根据需要修改这一页的设置,这里选择默认设置,点击【下一步】进入下一步设置如图5所示。

图 5

勾选上“更改默认的数据库为:”复选框,选择新数据源链接的数据库为Northwind,设置后如图6所示。

在VC++6.0中使用ODBC连接数据库

图 6

点击【下一步】,进入如下页面:

图 7

点击【完成】可以看到新创建的数据源的配置信息如下图。

在VC++6.0中使用ODBC连接数据库

图 8

点击【测试数据源(T) 】,弹出如图9窗口时表示新数据源创建成功。

图 9 测试数据源

在VC++6.0中使用ODBC连接数据库

点击【确定】回到原来的窗口,再点【确定】完成新数据源的创建工作,在“ODBC数据源管理器”的“用户DSN”标签页中看到我们新建的数据源,如图10所示。

图 10 数据源创建成功

点击【确定】退出。至此新数据源创建成功。

在VC++6.0中使用ODBC连接数据库(二)

一、用VC++6.0操作数据库

在VC中操作数据库时常用的一个类叫CRecordset,它的继承关系如图11所示。

图 11 类CRecordset的继承关系

在VC++6.0中使用ODBC连接数据库

它封装了很多属性和操作,用来操作数据库,常用的有数据成员如下: m_strFilter:它包含的字符串相当于SQL语句中的where子句,可以用它作为一个过滤器只选择那些符合标准的记录

m_strSort:它包含的字符串相当于SQL语句中的order by子句,用来控制记录集的排序方式。

这些数据成员可以在Open或Query函数之前指定。 常用的函数: Open:打开数据集; Close:关闭数据库;

IsOpen:判断数据集是否已经打开,返回非零值如果记录集对象已经调用过Open或Query函数但是记录集没有被关闭,否则返回0;

IsBOF:返回非零值如果记录集已经指向第一个记录集之前; IsEOF:返回非零值如果记录集已经指向最后一个记录集的后面;

AddNew:准备向记录集中添加一条新纪录。完成以后必须调用Update函数完成添加工作(即添加到数据库中);

Delete:从记录集中删除当前记录;

Edit:准备修改当前记录。完成后必须调用Update函数完成修改; Update:完成AddNew或Edit的操作,他保存添加的新的记录或修改过的记录到数据库中;

Move:移动当前记录到指定的位置;

MoveFirst:移动当前记录到记录集的第一个记录; MoveLast:移动当前记录到记录集的最后一个记录; MoveNext:移动当前记录到该记录的下一个记录; MovePrev:移动当前记录到该记录的上一个记录; 可以查看MSDN获取更多的信息。

在VC++6.0中使用ODBC连接数据库

需要说明的是,CRecordset的一个对象对应着数据库中的一张表或一个视图,我们在用的时候通常是从该类中继承一个子类出来,用这个子类来操作数据库。

下面以Northwind数据库中的表“Orders”为例,演示如何用VC++6.0操作数据库。

打开VC,新建一个基于对话框的应用程序,工程名为“ODBCDemo”。打开对话框资源,在对话框上添加所需的控件,如图

12.

图 12

添加继承自CRecordset类的一个子类,对应“Orders”表,添加过程如下:

打开StdAfx.h文件,向文件中添加包含头文件的语句“#include

<afxdb.h>”,该头文件包含了用到的类的定义和实现。按“CTRL+W”进入类向导,点击右上角的按钮,在弹出的下拉菜单中选择new,弹出添加新类的对话框如图13,在Name:对应的编辑框中输入新类名:COrdersSet,在Base class对应的下拉框中选择基类CRecordset,在选择时有一个快速选择

在VC++6.0中使用ODBC连接数据库

的方法,首先鼠标点到下拉框上,然后快速输入要选择的基类的名称,即可快速选择出需要的基类。

图 13

点击【OK】弹出选择数据源的窗口。选择ODBC在下拉框中选择数据源NorthwindDSN如图

14.

在VC++6.0中使用ODBC连接数据库

图 14

点击【OK】进入选择对应表的对话框,选择表dbo.Orders如图

15.

图 15 选择数据集对应的表

点击【OK】完成新类的添加工作,可以在类视图“ClassView”中看到刚添加的类的信息如下图所示。

图 16 刚添加的类的信息

在VC++6.0中使用ODBC连接数据库

可以看到,Orders表中的每一列都以成员变量的方式映射到新添加的类中,成员变量的名称为“m_”加上列表的格式,在这里需要注意一下,当用ODBC操作数据库时,我们在设计时最好给用英文字符串命名列明,否则的话当该表映射到数据集类中时,对应的成员变量名自动命名为m_column1、m_column2 等名称,不利于操作。下面就可以利用这个类对数据库中对应的表进行操作了。

在VC++6.0中使用ODBC连接数据库(三)

首先向ODBCDemoDlg.h文件中添加语句“#include "OrdersSet.h"”,向类CODBCDemoDlg添加成员变量“m_setOrders”,向类中添加成员函数

ShowSetValue(),用来把数据集中的信息显示到对话框的控件中,函数如下 void CODBCDemoDlg::ShowSetValue() {

if (!m_setOrders.IsEOF()) {

CString strTmp;

strTmp.Format("%d", m_setOrders.m_OrderID);

GetDlgItem(IDC_EDT_ORDERID)->SetWindowText(strTmp); // 1.OrderID

GetDlgItem(IDC_EDT_CUSTOMERID)->SetWindowText(m_setOrders.m_CustomerID);

strTmp.Format("%d", m_setOrders.m_EmployeeID); GetDlgItem(IDC_EDT_EMPLOYEEID)->SetWindowText(strTmp); GetDlgItem(IDC_ED …… 此处隐藏:3513字,全部文档内容请下载后查看。喜欢就下载吧 ……

在VC++6.0中使用ODBC连接数据库.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/2078251.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)