ODBC.doc
- 文档编号:231467
- 上传时间:2022-10-07
- 格式:DOC
- 页数:10
- 大小:222KB
ODBC.doc
《ODBC.doc》由会员分享,可在线阅读,更多相关《ODBC.doc(10页珍藏版)》请在冰豆网上搜索。
《数据库系统概论》课程之实验六
------通过ODBC访问数据库
1实验目的
1.学会配置ODBC数据源.
2.熟悉使用ODBC来进行数据库应用程序的设计.
3.熟悉通过ODBC接口访问(异构)数据库并对(异构)数据库进行操作.
4.熟悉ODBC数据源的概念及数据源的创建方法.
5.完成作业的上机练习。
2实验平台和实验工具
实验平台:
在实验1中安装的RDBMS及其ODBCDriver.
通过C语言编写访问数据库的应用程序。
编程工具自选。
3实验内容和要求
1.配置两个不同的数据源,编写程序连接两个不同RDBMS的数据源,对异构数据库进行操作。
例如,将KingbaseES数据库的某个表中的数据转移到SQLSever数据库的表中。
2.使用ODBC编写应用程序来对异构数据库进行各种数据操作。
3.要求:
给出配置两个不同数据源的过程。
提交原程序并标识必要的注释。
保证程序能正确编译和运行,认真填写实验报告。
4实验报告
《数据库系统概论》实验报告
题目:
通过ODBC访问数据库
姓名
王朔
日期
2014/4/24
实验环境:
操作系统:
Windows7;数据库管理系统:
SQLServer2008
实验内容与完成情况:
一、配置数据源(运用数据源管理工具来进行配置。
)
实验中需要同时用到KingbaseES和SQLServer,因此需要分别建立两个数据源,我们将其取名为KingbaseESODBC和SQLServer。
下面是建立这两个数据源的具体步骤。
选择『开始』│『设置』│『控制面板』菜单,在弹出窗口中双击“管理工具”图标进
入管理工具界面,双击“数据源(ODBC)”图标。
1.建立KingbaseES数据源。
(1)选择“系统DSN”选项,单击【添加(D)…】按钮,系统弹出“创建新数据源”
对话框,如图1所示:
图1数据源管理器
(2)如图2所示,在ODBC驱动器程序列表中,选择“KingbaseODBCDriver”,单
击【完成】按钮,系统弹出“KingbaseODBC数据源配置”对话框,如图3所示。
图2创建新数据源
(3)输入数据源名称、数据库名称以及数据库IP地址。
图中数据源的名称为
KingbaseESODBC,连接的数据库为“学生课程数据库”,服务器为localhost,用
户名和口令分别为SYSTEM和MANAGER。
注意:
KingbaseES区别大小写。
图3KingbaseODBC数据源配置
(4)单击【保存】按钮,这样就创建了一个名为“KingbaseESODBC”的KingbaseES
ODBC数据源。
(5)如果要测试和数据源的连接是否成功,可以单击“测试连接”,系统会根据测试
的结果反馈相应的消息框,如图4和图5所示。
图4连接成功图5连接失败
以上五步就建立了一个名为KingbaseESODBC的数据源
2.建立SQLServer数据源。
(1)选择“系统DSN”选项,单击【添加(D)…】按钮,系统弹出“创建新数据源”
对话框,如图6所示:
图6数据源管理器
(2)如图7所示,在ODBC驱动器程序列表中,选择“SQLServer”,单击【完成】
按钮,系统弹出“CreateNewDataSourcetoSQLServer”对话框,如图8所示。
图7创建数据源配置
(3)如图8,输入数据源名称和服务器,单击【下一步】按钮。
图中数据源的名称
为SQLServer,服务器为(local)。
如图9,选择身份认证方式,输入用户名和密码,
用户名和口令分别为sa和sa(请根据实际情况进行修改,并对源代码进行相应的
修改)。
图8SQLServer数据源配置
(1)
图9SQLServer数据源配置
(2)
(4)连续单击【下一步】按钮,这样就创建了一个名为“SQLServer”的SQLServer
ODBC数据源。
如图10所示,将弹出一个提示框,提示即将创建一个新的ODBC
数据源。
图10提示框
(5)如果要测试和数据源的连接是否成功,可以单击“TestDataSource”,如果连接
成功,系统将会显示一个连接成功的消息框,如图11所示。
图11连接成功
以上五步就建立了一个名为SQLServer的数据源。
注:
在创建数据源,测试连接是否成功时,如果KingbaseES和SQLServer未启动服务,
则将显示连接失败。
启动服务后,再进行测试,连接成功。
二.通过ODBC访问异构数据库,并且对异构数据库进行操作。
(1)我们还需要在SQLServer中预先建立基本表STUDENT。
在本实验中,我们将编写程序连接两个不同RDBMS的数据源,将KingbaseES数据库中的STUDENT表中的数据备份到SQLServer数据库的STUDENT中。
(2)在VC++6.0环境中编程实现访问数据库。
本实验源程序名为ODBCTest。
下面我们将在VC++6.0环境下对该程序进行编译。
实验源代码:
#include
#include
#include
#include
#include
#include
#defineSNO_LEN30
#defineNAME_LEN50
#defineDEPART_LEN100
#defineSSEX_LEN5
intmain()
{
/*Step1定义句柄和变量*/
//以king开头的表示的是连接KINGBASEES的变量
//以server开头的表示的是连接SQLSERVER的变量
SQLHENV
kinghenv,serverhenv;
//环境句柄
SQLHDBC
kinghdbc,serverhdbc;
//连接句柄
SQLHSTMT
kinghstmt,serverhstmt;
//语句句柄
SQLRETURN
ret;
//结果返回集
SQLCHAR
sName[NAME_LEN],sDepart[DEPART_LEN],sSex[SSEX_LEN],
sSno[SNO_LEN];
SQLINTEGER
sAge;
SQLINTEGER
cbAge=0,cbSno=SQL_NTS,cbSex=SQL_NTS,
cbName=SQL_NTS,cbDepart=SQL_NTS;
/*Step2初始化环境*/
//分配环境句柄
ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&kinghenv);
ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);
//设置管理环境的属性
ret=SQLSetEnvAttr(kinghenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
/*Step3:
建立连接*/
//分配连接句柄
ret=SQLAllocHandle(SQL_HANDLE_DBC,kinghenv,&kinghdbc);
ret=SQLAllocHandle(SQL_HANDLE_DBC,serverhenv,&serverhdbc);
ret=SQLConnect(kinghdbc,
//连接KingbaseES
"KingbaseESODBC",SQL_NTS,
"SYSTEM",SQL_NTS,
"MANAGER",SQL_NTS);
if(!
SQL_SUCCEEDED(ret))
//连接失败时返回错误值
return-1;
ret=SQLConnect(serverhdbc,
//连接SQLServer
"SQLServer",SQL_NTS,
"sa",SQL_NTS,
"sa",SQL_NTS);
if(!
SQL_SUCCEEDED(ret))
//连接失败时返回错误值
return-1;
/*Step4:
初始化语句句柄*/
ret=SQLAllocHandle(SQL_HANDLE_STMT,kinghdbc,&kinghstmt);
ret=SQLSetStmtAttr(kinghstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BI
ND_BY_COLUMN,SQL_IS_INTEGER);
//设置语句选项
ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);
/*Step5:
两种方式执行语句*/
/*预编译带有参数的语句*/
//需要多次执行插入,因此预先声明插入语句
ret=SQLPrepare(serverhstmt,"INSERTINTOSTUDENT
(SNO,SNAME,SSEX,SAGE,SDEPT)VALUES(?
?
?
?
?
)",
SQL_NTS);
if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO)
{
//绑定参数
ret
=
SQLBindParameter(serverhstmt,
1,
SQL_PARAM_INPUT,
SQL_C_CHAR,SQL_CHAR,SNO_LEN,0,sSno,0,&cbSno);
ret
=
SQLBindParameter(serverhstmt,
2,
SQL_PARAM_INPUT,
SQL_C_CHAR,SQL_CHAR,NAME_LEN,0,sName,0,&cbName);
ret
=
SQLBindParameter(serverhstmt,
3,
SQL_PARAM_INPUT,
SQL_C_CHAR,SQL_CHAR,2,0,sSex,0,&cbSex);
ret
=
SQLBindParameter(serverhstmt,
4,
SQL_PARAM_INPUT,
SQL_C_LONG,SQL_INTEGER,0,0,&sAge,0,&cbAge);
ret
=
SQLBindParameter(serverhstmt,
5,
SQL_PARAM_INPUT,
SQL_C_CHAR,SQL_CHAR,DEPART_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ODBC
![提示](https://static.bdocx.com/images/bang_tan.gif)