- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北邮大三下数据库实验报告4
北京邮电大学
实验报告
课程名称 数据库系统原理
实验内容 实验4
数据库接口实验
班级 2013211*** 姓名 ***
指导老师 成绩_________
2016年 05月 12日
实验4 数据库接口实验
实验目的:
1.通过实验了解通用数据库应用编程接口ODBC的基本原理和实现机制,熟悉主要的ODBC接口的语法和使用方法;
2.利用C语言(或其它支持ODBC接口的高级程序设计语言)编程实现简单的数据库应用程序,掌握基于ODBC的数据库访问的基本原理和方法。
3.尝试使用SQL Server上的工具以特定格式导出数据,初步了解现代程序设计辅助工具的使用,加深对接口和数据库与外界的联系的认识。
实验内容:
本实验内容主要是如何通过数据库接口访问(包括增、删、改)数据库中的数据。
要求能够通过编写程序或者使用SQL Server工具访问到数据。该实验的重点在于ODBC数据源配置和工具使用,而不在于编写有一定复杂度的程序。
实验步骤
在Windows控制面板中通过管理工具下的ODBC数据源工具在客户端新建连接到SQL Server服务器的ODBC数据源,测试通过后保存,注意名字要和应用程序中引用的数据源一样。
A)打开odbc数据源管理器,点击“添加”。
B)选择SQL Server,“完成”。
C)为你的数据源命名,要记住这个名字,在编写程序中要进行链接。然后“下一步”。
D)如图所选,点击下一步
E)选择自己已经建立好的数据库。点击“下一步”。
F)到这个界面,直接点击“下一步”。
G)点击“测试数据源”进行测试,看时候能够连接成功。
H)如图所示,连接成功。
编译程序并调试通过。
源代码见附录。
实验运行效果图:
A)
B)进行“删除”操作
删掉了第二条记录。
C)进行“insert”操作
记录又添加回来了。
D)进行“update”操作
将book_id为dep04_b001_aa的元组的book_id改为dep04_b001_02。
实验总结:
配置接口时花了一些功夫,测试数据源的时候总是连接不上,后来在“连接哪个SQL”这个选项选了local才成功。代码的编写理论上不困难,但是实际操作起来刚开始还是摸不着头脑,借鉴了别人的才知道连接句柄、环境句柄等的作用。代码运行过后,数据库中相应数据被程序改写,因为数据库没有设置主键,所以“插入”操作可以插入几个重复的元组。
源代码:
#include <windows.h>
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
HENV henv;
HDBC hdbc;
HSTMT hsmt;
SQLRETURN sret;
char szMscID[15];
long cbMscID;
char szMscName[15];
long cbMscName;
char szMscCompany[15];
long cbMscCompany;
char szMscLongitude[15];
long cbMscLongitude;
char szMscLatitude[15];
long cbMscLatitude;
SQLREAL szMscAltitude;
long cbMscAltitude;
void printDB();
void deleteDB();
void updateDB();
void insertDB();
void renewHSMT();
int main()
{
sret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (sret != SQL_SUCCESS && sret != SQL_SUCCESS_WITH_INFO)
printf("wrong!1");
else
{
sret = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
if (sret != SQL_SUCCESS && sret != SQL_SUCCESS_WITH_INFO)
printf("wrong!2");
else
文档评论(0)