北邮大三数据库实验四数据库接口实验.docx_第1页
北邮大三数据库实验四数据库接口实验.docx_第2页
北邮大三数据库实验四数据库接口实验.docx_第3页
北邮大三数据库实验四数据库接口实验.docx_第4页
北邮大三数据库实验四数据库接口实验.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验四 数据库接口实验实验目的1通过实验了解通用数据库应用编程接口odbc的基本原理和实现机制,熟悉主要的odbc接口的语法和使用方法;2利用c语言(或其它支持odbc接口的高级程序设计语言)编程实现简单的数据库应用程序,掌握基于odbc的数据库访问的基本原理和方法3学习java语言,并采用jdbc接口方式对数据库进行访问实验内容与步骤1、 以教科书第四章关于sql语言相关内容为基础,课后查阅、自学odbc接口有关内容,包括odbc的体系结构、工作原理、数据访问过程、主要api接口的语法和使用方法等。2、以实验二建立的学生数据库为基础,编写 c语言(或其它支持odbc接口的高级程序设计语言) 数据库应用程序,按照如下步骤访问数据库(a) step1. odbc初始化,为odbc分配环境句柄(b) step2. 建立应用程序与odbc数据源的连接(c) step3. 利用sqlexecdirect语句,实现数据库应用程序对数据库的建立、查询、修改、删除等操作(d) step4. 检索查询结果集(e) step5. 结束数据库应用程序 3、要求所编写的数据库访问应用程序中使用到以下主要的odbc api函数:(1) sqlallocenv:初始化odbc环境,返回环境句柄(2) sqlallocconnect:为连接句柄分配内存并返回连接句柄(3) sqlconnect:连接一个sql数据资源(4) sqldriverconnect连接一个sql数据资源,允许驱动器向用户询问信息(5) sqlallocstmt 为语句句柄分配内存, 并返回语句句柄(6) sqlexecdirect 把sql语句送到数据库服务器,请求执行由sql语句定义的数据库访问(7) sqlfetchadvances将游标移动到到查询结果集的下一行(或第一行)(8) sqlgetdata 按照游标指向的位置,从查询结果集的特定的一列取回数据(9) sqlfreestmt 释放与语句句柄相关的资源(10) sqldisconnect 切断连接(11) sqlfreeconnect 释放与连接句柄相关的资源(12) sqlfreeenv 释放与环境句柄相关的资源创建odbc数据源:实验代码:#include #include #include #include sql.h#include sqltypes.h#include sqlext.hretcode retcode;/结果返回集sqlhdbc hdbc;/定义链接句柄void print();/打印子程序void sql(unsigned char);/执行sql语句子程序int main() sqlhandle henv; /定义环境句柄unsigned char sy=experiment2;/odbc数据源名称 unsigned char db2=localhost;/用户名 unsigned char pass= ;/密码 /分配odbc环境retcode=sqlallochandle(sql_handle_env, sql_null_handle, &henv); if(retcode=sql_success|retcode=sql_success_with_info) /声明环境retcode=sqlsetenvattr(henv, sql_attr_odbc_version,(void*)sql_ov_odbc3, 0);if(retcode = sql_success | retcode = sql_success_with_info) retcode = sqlallochandle(sql_handle_dbc, henv, &hdbc); /分配连接句柄if(retcode = sql_success | retcode = sql_success_with_info)retcode=sqlconnect(hdbc,sy,sql_nts,db2,sql_nts,pass,sql_nts);/链接if(retcode = sql_success | retcode = sql_success_with_info)print();unsigned char insert=insert into dbo.course values(c08,计算机网络,51,3,秋);sql(insert);print();unsigned char update=update dbo.course set credit=100 where course_name=计算机网络;sql(update);print(); unsigned char del=delete from dbo.course where course_name=计算机网络;sql(del);print(); sqlfreeconnect(hdbc); /释放链接句柄sqlfreeenv(henv); / 释放odbc 环境句柄system(pause);return 0;void print()unsigned char yuju=select * from dbo.course; sqlhstmt hstmt;/定义语句句柄 char l120;char l220;char l320;char l420;char l520; long lenout1,lenout2,lenout3,lenout4,lenout5;retcode = sqlallochandle(sql_handle_stmt, hdbc, &hstmt); /分配语句句柄if(retcode=sql_success)retcode=sqlexecdirect(hstmt,yuju,sql_nts);if(retcode = sql_success|retcode = sql_success_with_info)/将结果集中的属性列一一绑定至变量 retcode=sqlbindcol(hstmt,1,sql_c_char,l1,sizeof(l1),&lenout1); retcode=sqlbindcol(hstmt,2,sql_c_char,l2,sizeof(l2),&lenout2); retcode=sqlbindcol(hstmt,3,sql_c_char,l3,sizeof(l3),&lenout3); retcode=sqlbindcol(hstmt,4,sql_c_char,l4,sizeof(l4),&lenout4); retcode=sqlbindcol(hstmt,5,sql_c_char,l5,sizeof(l5),&lenout5); /把所有捆绑过的数据字段的数据拷贝到相应的缓冲区 retcode=sqlfetch(hstmt);while(retcode = sql_success|retcode = sql_success_with_info)printf(%st%st%st%st%sn,l1,l2,l3,l4,l5); /把所有捆绑过的数据字段的数据拷贝到相应的缓冲区retcode=sqlfetch(hstmt); sqlfreestmt(hstmt,sql_drop);void sql(unsigned char aaa) printf(n%sn,aaa); sqlhstmt hstmt;/定义语句句柄retcode=sqlallochandle(sql_handle_stmt, hdbc, &hstmt); /分配语义句柄if(retcode=sql_success)retcode=sqlexecdirect(hstmt,aaa,sql_nts); sqlfreestmt(hstmt,sql_drop); /释放语句句柄实验结果:1、插入一条记录:2、更新一条记录3、删除一条记录:实验总结: 1、首先的问题是熟悉odbc是什么:一个基于odbc的应用程序对数据库的操作不依赖任何dbms,不直接与dbms打交道,所有的数据库操作由对应的dbms的odbc驱动程序完成。由此可见,odbc的最大优点是能以统一的方式处理所有的数据库。odbc 使用层次的方法来管理数据库,在数据库通信结构的每一层,对可能出现依赖数据库产品自身特性的地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论