




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京邮电大学实验报告课程名称 数据库系统原理实验内容 实验4数据库接口实验班级 2013211* 姓名 *指导老师 成绩_2016年 05月 12日实验4 数据库接口实验实验目的:1通过实验了解通用数据库应用编程接口ODBC的基本原理和实现机制,熟悉主要的ODBC接口的语法和使用方法;2利用C语言(或其它支持ODBC接口的高级程序设计语言)编程实现简单的数据库应用程序,掌握基于ODBC的数据库访问的基本原理和方法。3尝试使用SQL Server上的工具以特定格式导出数据,初步了解现代程序设计辅助工具的使用,加深对接口和数据库与外界的联系的认识。实验内容:本实验内容主要是如何通过数据库接口访问(包括增、删、改)数据库中的数据。要求能够通过编写程序或者使用SQL Server工具访问到数据。该实验的重点在于ODBC数据源配置和工具使用,而不在于编写有一定复杂度的程序。实验步骤1. 在Windows控制面板中通过管理工具下的ODBC数据源工具在客户端新建连接到SQL Server服务器的ODBC数据源,测试通过后保存,注意名字要和应用程序中引用的数据源一样。 A)打开odbc数据源管理器,点击“添加”。B)选择SQL Server,“完成”。C)为你的数据源命名,要记住这个名字,在编写程序中要进行链接。然后“下一步”。D)如图所选,点击下一步E)选择自己已经建立好的数据库。点击“下一步”。F)到这个界面,直接点击“下一步”。G)点击“测试数据源”进行测试,看时候能够连接成功。H)如图所示,连接成功。2. 编译程序并调试通过。源代码见附录。实验运行效果图:A)B)进行“删除”操作删掉了第二条记录。C)进行“insert”操作第2条 记录又添加回来了。D)进行“update”操作将book_id为dep04_b001_aa的元组的book_id改为dep04_b001_02。实验总结:配置接口时花了一些功夫,测试数据源的时候总是连接不上,后来在“连接哪个SQL”这个选项选了local才成功。代码的编写理论上不困难,但是实际操作起来刚开始还是摸不着头脑,借鉴了别人的才知道连接句柄、环境句柄等的作用。代码运行过后,数据库中相应数据被程序改写,因为数据库没有设置主键,所以“插入”操作可以插入几个重复的元组。源代码:#include #include #include #include #include HENV henv;HDBC hdbc;HSTMT hsmt;SQLRETURN sret;char szMscID15;long cbMscID;char szMscName15;long cbMscName;char szMscCompany15;long cbMscCompany;char szMscLongitude15;long cbMscLongitude;char szMscLatitude15;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);elsesret = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);if (sret != SQL_SUCCESS & sret != SQL_SUCCESS_WITH_INFO)printf(wrong!3);elsesret = SQLConnect(hdbc,(SQLCHAR*)sqlserver,SQL_NTS,NULL,0,NULL,0);if (sret != SQL_SUCCESS & sret != SQL_SUCCESS_WITH_INFO)printf(wrong!4);sret = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hsmt);if (sret != SQL_SUCCESS & sret != SQL_SUCCESS_WITH_INFO)printf(wrong!5);elseprintDB();int selectNum = 0;char ab; printf(Please select a function:1.delete 2.update 3.insert -1.escn);scanf(%d,&selectNum);while(selectNum != -1)if(selectNum != 1 & selectNum != 2 & selectNum != 3)printf(input the wrong number!Please try again.);scanf(%d,&selectNum);elseif(selectNum = 1)renewHSMT();deleteDB();renewHSMT();printDB();else if(selectNum = 2)renewHSMT();updateDB();renewHSMT();printDB();elserenewHSMT();insertDB();renewHSMT();printDB();printf(Please select a function:1.delete 2.update 3.insert -1.escn);scanf(%d,&selectNum);SQLFreeHandle(SQL_HANDLE_STMT, hsmt);SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC, hdbc);SQLFreeHandle(SQL_HANDLE_ENV, henv); system(pause); void printDB() sret = SQLExecDirect(hsmt,(SQLCHAR*)SELECT book_id,book_name,publish_company,author,price FROM book$,SQL_NTS); if(sret = SQL_SUCCESS | sret = SQL_SUCCESS_WITH_INFO) SQLBindCol(hsmt, 1, SQL_C_CHAR, &szMscID, sizeof(szMscID), &cbMscID);SQLBindCol(hsmt, 2, SQL_C_CHAR, szMscName, sizeof(szMscName), &cbMscName);SQLBindCol(hsmt, 3, SQL_C_CHAR, szMscCompany, sizeof(szMscCompany), &cbMscCompany);SQLBindCol(hsmt, 4, SQL_C_CHAR, &szMscLongitude, sizeof(szMscLongitude), &cbMscLongitude);SQLBindCol(hsmt, 5, SQL_C_CHAR, &szMscLatitude, sizeof(szMscLatitude), &cbMscLatitude);/SQLBindCol(hsmt, 6, SQL_C_FLOAT, &szMscAltitude, sizeof(szMscAltitude), &cbMscAltitude);printf(%-15s %-15s %-15s %-15s %-15sn,book_id,book_name,publish_company,author,price);while(SQLFetchScroll(hsmt,SQL_FETCH_NEXT,0) != SQL_NO_DATA_FOUND) printf(%-15s %-15s %-15s %-15s %-15sn, szMscID, szMscName, szMscCompany, szMscLongitude, szMscLatitude); else printf(wrong!6n); void deleteDB() sret = SQLExecDirect(hsmt,(SQLCHAR*)DELETE FROM book$ WHERE book_id = dep04_b001_01,SQL_NTS); if(sret = SQL_SUCCESS | sret = SQL_SUCCESS_WITH_INFO) printf(delete successful!n); else printf(wrong!7n); void updateDB() sret = SQLExecDirect(hsmt,(SQLCHAR*)update book$ set book_id = dep04_b001_aa WHERE book_id = dep04_b001_02,SQL_NTS); if(sret = SQL_SUCCESS | sret = SQL_SUCCESS_WITH_INFO) printf(update successful!n); else printf(wrong!8n); void insertDB() sret = SQLExecDirect(hsmt,(SQLCHAR*)INSERT INTO book$ VALUES(dep04_b001_01,计算机基础,清华大学出版社,洪涛,16)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中华文明史(山东联盟)智慧树答案
- 妊娠诊断试题及答案
- 术前讨论制度考试试题(附答案)
- 中外建筑史(吉林电子信息职业技术学院)知到智慧树答案
- 中外园林漫赏知到智慧树答案
- 吊装作业安全培训考试题(含答案)
- 药品召回管理规定考试试题(附答案)
- 甲状腺疾病与甲状腺合理用药考核试题及答案
- 农网配电营业工专业模拟习题及答案
- 中学数学课程与教学论(山东联盟)知到智慧树答案
- JJF(新) 146-2024 可燃气体和有毒气体检测报警控制系统校准规范
- 《非权力影响力》课件
- 《高血压的护理常规》课件
- 《更年期的中医调理》课件
- 《环形件模锻实验》课件
- DB37T 5059-2016 工程建设地下水控制技术规范
- 智慧安监大数据云平台建设方案
- 人教PEP版(一起)(2024)一年级上册英语全册教案(单元整体教学设计)
- 护士职业防护
- 酒店公共卫生事件应急预案
- DL∕T 1664-2016 电能计量装置现场检验规程
评论
0/150
提交评论