logo资料库

VC++环境下如何连接SQL数据库.doc

第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
资料共21页,剩余部分请下载后查看
一、实验环境
二、实验内容和要求
三、实验原理
四、实验步骤
1 基于ODBC方式的实验步骤
(1)在SQL Server2000中创建数据库student,该数据库中有学生表s用来存放学生信息
(2)创建ODBC数据源
(3)创建VC应用程序。
(4)界面设计
(5)代码设计
(6)运行结果
2基于ADO方式的实验步骤
(1)创建VC应用程序
(2)界面设计
(3)与ADO相关的代码设计
(4)与功能相关的代码设计
(5)运行结果
五、实验总结
VC++环境下连接 SQL Server 数据库方法指导 实验类型:设计型 一、实验环境 1.Windows XP 操作系统; 2.VC++6.0 开发环境; 3.SQL server 2000 数据库管理系统。 二、实验内容和要求 利用 VC 开发应用程序,要求能够通过界面完成对数据库中数据的查询、插入、删除以 及修改。 三、实验原理 VC 访问 SQL Server 数据库,常用的方法有两种:通过 ODBC 连接和通过 ADO 连接。 下面分别介绍一下。 采用 ODBC 方式要求先创建 ODBC 数据源,应用程序通过数据源与数据库连接;并且 在创建应用程序时,只能是基于单文档或多文档,而无法直接创建基于对话框的应用程序。 采用 ADO 方式无需创建数据源,应用程序可通过 ADO 直接与数据库连接;ADO 方式 可以创建基于对话框的应用程序。 两种方式都要在应用程序中添加代码以完成相应的初始化功能。 四、实验步骤 下面通过两个例子分别介绍基于 ODBC 方式和基于 ADO 方式的实验步骤。 是否为主键 1 基于 ODBC 方式的实验步骤 (1)在 SQL Server2000 中创建数据库 student,该数据库中有学生表 s 用来存放学生信息。 s 表的结构如下: 属性名 sno sname age dept comment s 表的创建方法在此不详述。 (2)创建 ODBC 数据源 类型 char(8) varchar(10) int char(4) varchar(8) 所在系号 允许空 √ √ 是 否 否 否 √ √ 姓名 年龄 否 备注 学号 评语 “开始”--〉“设置”--〉“控制面板”—〉“管理工具”—〉“数据源(ODBC)”,打开 之后出现如图 1 所示窗口。 1
点击“添加”按钮,出现图 2。 图 1 图 2 选择 SQL Server,点击“完成”,出现图 3。 图 3 名称中填写所创建的数据源的名称,本例中为 student,描述可以不填。因为 SQL Server 的服务器和客户端均安装在本地计算机上,所以服务器为(local)。如果本地计算机上 只安装了客户端,服务器安装在另外的机器上,服务器为另一台机器的名称。 点击“下一步”,出现图 4。 2
图 4 SQL Server 如何验证 ID 的真伪,使用哪种方法要看安装 SQL Server2000 时选择的是哪 种验证方式。如果是 Windows 验证,选择使用网络登录 ID 的 Windows NT 验证;如果是混 合验证模式则要选择下面一种。本例中采用 Windows 验证。进入数据库无需另外的用户名 和密码。 点击“下一步”,出现图 5。 这里要更改默认的数据库,默认情况下数据源所连接的数据库为 master,这里要改为 图 5 student 数据库。 点击“下一步”,出现图 6。 这里无需修改,点击“完成”出现图 7。 图 6 3
图 7 点击“测试数据源”,如果测试成功说明数据源已成功创建。 (3)创建 VC 应用程序。 打开 VC++6.0,新建工程,如图 8 所示。选择 MFC AppWizard(exe),工程名为 exec1, 存放在 D 盘实验文件夹里。 点击“确定”,在出现的窗口中选择“单文档”,点击“下一步”,出现图 9。 图 8 这里选择“查看数据库不使用文件支持”,还要选择数据源,点击“数据源…”,弹出 如图 10 所示窗口。 图 9 4
图 10 选择“student”数据源,点击“OK”,在弹出的窗口中选择表 dbo.s,点击“OK”返回 图 9 所示的界面。以后的创建步骤中没有需要修改的地方可以直接点击完成。这样工程 exec1 就创建完成了,并且通过数据源与数据库发生了关联。 创建好的工程可以运行,结果如图 11 所示。 (4)界面设计 图 11 在 工 作 区 左 边 的 树 型 结 构 中 , 选 择 ResourceView , 展 开 Dialog 节 点 , 双 击 IDD_EXEC1_FORM,打开该对话框。在这里添加所需控件。如图 12 所示。 此时运行程序,结果如图 13 所示。 图 12 5
下一记录 图 13 从界面可以看出程序要完成的功能。完整的程序运行后,界面默认显示表中的第一条 数据,点击工具栏中的“下一记录”可以显示下一条记录;点击“删除”按钮可将当前显示 的数据从库中删除;点击“清除”按钮,将所有编辑框清空;在界面输入学生信息,点击“添 加”按钮可将此学生信息输入至数据库;点击“修改”按钮可修改当前显示的学生信息。 为界面上的编辑框和按钮添加变量和函数。在界面右键单击,选择“建立类向导”,弹 出如图 14 所示窗口。 本例中 需要为编辑 框 IDC_AGE, IDC_COMMENT, IDC_DEPARTMENT, IDC_NAME, IDC_SNO 添加变量。以 IDC_AGE 为例,点击“ADD Variable”弹出如图 15 所示窗口。 图 14 图 15 6
在下拉框中选择 m_pSet->m_age 为变量名,这里的变量是与数据库表 s 中的字段相对 应的,变量类型也与 s 中的字段类型对应。其它变量的添加方法相同。 为按钮添加函数比较简单,双击按钮即可。添加的函数在 exec1View.cpp 文件中。 (5)代码设计 “清除”按钮所添加的函数为 OnClear(),具体代码如下: //名称:OnClear //功能:清除编辑框中的内容 void CExec1View::OnClear() { CWnd* c1; c1= CWnd::GetDlgItem(IDC_SNO);//获得编辑框 c1->SetWindowText(""); //将编辑框置空 c1= CWnd::GetDlgItem(IDC_NAME); c1->SetWindowText(""); c1= CWnd::GetDlgItem(IDC_DEPARTMENT); c1->SetWindowText(""); c1= CWnd::GetDlgItem(IDC_AGE); c1->SetWindowText(""); c1= CWnd::GetDlgItem(IDC_COMMENT); c1->SetWindowText(""); } “添加”按钮所添加的函数为 OnAdd(),具体代码如下: //名称:OnAdd //功能:插入一条记录 void CExec1View::OnAdd() { // TODO: Add your control notification handler code here //判断年龄是否合适 CString strAge; GetDlgItem(IDC_AGE)->GetWindowText(strAge); int nAge = atoi(strAge.GetBuffer(0)); if(nAge<0 || nAge>120) { AfxMessageBox("输入的年龄不符合实际!"); return; } //呈增加状态 m_pSet->AddNew(); UpdateData(); //更新数据库 m_pSet->Update(); //重新获得数据 m_pSet->Requery(); UpdateData(FALSE); 7
} “删除”按钮所添加的函数为 OnDelete(),具体代码如下: //名称:OnDelete //功能:删除当前记录 void CExec1View::OnDelete() { // TODO: Add your control notification handler code here //发出删除命令 m_pSet->Delete(); //重新获得记录集 m_pSet->Requery(); UpdateData(FALSE); } “修改”按钮所添加的函数为 OnEdit(),具体代码如下: //名称:OnEdit //功能:修改当前记录 void CExec1View::OnEdit() { // TODO: Add your control notification handler code here //判断年龄是否合适 CString strAge; GetDlgItem(IDC_AGE)->GetWindowText(strAge); int nAge = atoi(strAge.GetBuffer(0)); if(nAge<0 || nAge>120) { AfxMessageBox("输入的年龄不符合实际!"); return; } //呈编辑状态 m_pSet->Edit(); UpdateData(); //更新数据库 m_pSet->Update(); //重新获得记录集 m_pSet->Requery(); UpdateData(FALSE); } (6)运行结果 8
分享到:
收藏