VC++6.0环境下用ODBC连接SQL Server数据库的简单例子

时间:2022-02-14 21:52:44

以前一直在用ADO的方式来连接数据库,但是最近的新项目中遇到了一个问题,客户非得用ORACLE的数据库来做,而我们的系统连接ORACLE数据库用的是ODBC,于是我也趁机学习了一下关于ODBC来连接数据库的东西,感觉比ADO强大易用,确实很值得推荐。

第一步,建立ODBC数据源。控制面板->ODBC->用户DSN->添加->SQL Server->完成,在弹出的对话框中,名称输入:"ODBCDSN"(就是数据源的名称),服务器填:"(local)"(因为我是连本地的SQL数据库),点击“下一步”,再点击“下一步”(你没有看错),选择“更改默认的数据库为”,在下拉列表中选择要连接的数据库名称,点击“下一步”,“完成”即可。

第二步,搭个MFC的工程。(不多说)

VC++6.0环境下用ODBC连接SQL Server数据库的简单例子

第三步,在"StdAfx.h"头文件中,加入“#include <afxdb.h>   ”   (这是ODBC连接类CRecordset所在头文件)。

第四步,右键->“建立类向导...”,添加一个类(Add Class..->new),名称就叫“CRecSet”吧,基类选择“CRecordset”,“确定”。然后选择ODBC数据源,“确定”,然后选择你要操作的表,“确定”。类就建立完成了,然后你会发现,你选择地表的每一列都变成了一个新类的成员变量!

第五步,在你的对话框类“CxxxDlg”上右键->“添加成员变量”,变量类型填“CRecSet”,变量名填“m_setRec”,"确定"。这样你就可以在你的对话框类里得到一个你刚刚新建的类的对象了。

第六步,打开“CxxxDlg.cpp”,在Init函数里加入“m_setRec.Open();”,在“CxxxDlg.h”里声明一个函数“void ShowVal();”,然后在“CxxxDlg.cpp”中加入以下代码(m_ALARMGRADE_NAME是我的数据库中ALARMGRADE表中的NAME字段,也可以换成其他的字段):

void CODBCDemoDlg::ShowVal()
{
	CString strTmp;  
	m_setRec.MoveFirst();
	strTmp.Format("%s", m_setRec.m_ALARMGRADE_NAME);     
	GetDlgItem(IDC_EDIT1)->SetWindowText(strTmp);  // 1.OrderID

}

第七步,双击“查询”,在事件相应函数中加入下列代码:

	ShowVal();

第八步,运行,点击“查询”按钮,出现下图所示界面:

VC++6.0环境下用ODBC连接SQL Server数据库的简单例子

回头查看一下数据库,发现第一条记录的NAME字段确实为“严重报警”,说明连接成功。

VC++6.0环境下用ODBC连接SQL Server数据库的简单例子

PS:为什么没有提到CDataBase这个类呢,因为在声明CRecordset的时候MFC已经生成了一个缺省的CDataBase类。