北邮大三下数据库实验报告4.docx

上传人:b****7 文档编号:10186524 上传时间:2023-02-09 格式:DOCX 页数:15 大小:539.93KB
下载 相关 举报
北邮大三下数据库实验报告4.docx_第1页
第1页 / 共15页
北邮大三下数据库实验报告4.docx_第2页
第2页 / 共15页
北邮大三下数据库实验报告4.docx_第3页
第3页 / 共15页
北邮大三下数据库实验报告4.docx_第4页
第4页 / 共15页
北邮大三下数据库实验报告4.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

北邮大三下数据库实验报告4.docx

《北邮大三下数据库实验报告4.docx》由会员分享,可在线阅读,更多相关《北邮大三下数据库实验报告4.docx(15页珍藏版)》请在冰豆网上搜索。

北邮大三下数据库实验报告4.docx

北邮大三下数据库实验报告4

 

北京邮电大学

实验报告

课程名称数据库系统原理

实验内容实验4

数据库接口实验

 

班级2013211***姓名***

指导老师成绩_________

 

2016年05月12日

实验4数据库接口实验

实验目的:

1.通过实验了解通用数据库应用编程接口ODBC的基本原理和实现机制,熟悉主要的ODBC接口的语法和使用方法;

2.利用C语言(或其它支持ODBC接口的高级程序设计语言)编程实现简单的数据库应用程序,掌握基于ODBC的数据库访问的基本原理和方法。

3.尝试使用SQLServer上的工具以特定格式导出数据,初步了解现代程序设计辅助工具的使用,加深对接口和数据库与外界的联系的认识。

实验内容:

本实验内容主要是如何通过数据库接口访问(包括增、删、改)数据库中的数据。

要求能够通过编写程序或者使用SQLServer工具访问到数据。

该实验的重点在于ODBC数据源配置和工具使用,而不在于编写有一定复杂度的程序。

实验步骤

1.在Windows控制面板中通过管理工具下的ODBC数据源工具在客户端新建连接到SQLServer服务器的ODBC数据源,测试通过后保存,注意名字要和应用程序中引用的数据源一样。

A)打开odbc数据源管理器,点击“添加”。

B)选择SQLServer,“完成”。

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

HENVhenv;

HDBChdbc;

HSTMThsmt;

SQLRETURNsret;

charszMscID[15];

longcbMscID;

charszMscName[15];

longcbMscName;

charszMscCompany[15];

longcbMscCompany;

charszMscLongitude[15];

longcbMscLongitude;

charszMscLatitude[15];

longcbMscLatitude;

SQLREALszMscAltitude;

longcbMscAltitude;

voidprintDB();

voiddeleteDB();

voidupdateDB();

voidinsertDB();

voidrenewHSMT();

intmain()

{

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

{

sret=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);

if(sret!

=SQL_SUCCESS&&sret!

=SQL_SUCCESS_WITH_INFO)

printf("wrong!

3");

else

{

sret=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");

else

{

printDB();

intselectNum=0;

charab;

printf("Pleaseselectafunction:

1.delete2.update3.insert-1.esc\n");

scanf("%d",&selectNum);

while(selectNum!

=-1)

{

if(selectNum!

=1&&selectNum!

=2&&selectNum!

=3)

{

printf("inputthewrongnumber!

Pleasetryagain.");

scanf("%d",&selectNum);

}

else

{

if(selectNum==1)

{

renewHSMT();

deleteDB();

renewHSMT();

printDB();

}

elseif(selectNum==2)

{

renewHSMT();

updateDB();

renewHSMT();

printDB();

}

else

{

renewHSMT();

insertDB();

renewHSMT();

printDB();

}

}

printf("Pleaseselectafunction:

1.delete2.update3.insert-1.esc\n");

scanf("%d",&selectNum);

}

SQLFreeHandle(SQL_HANDLE_STMT,hsmt);

SQLDisconnect(hdbc);

SQLFreeHandle(SQL_HANDLE_DBC,hdbc);

SQLFreeHandle(SQL_HANDLE_ENV,henv);

}

}

}

}

system("pause");

}

voidprintDB()

{

sret=SQLExecDirect(hsmt,(SQLCHAR*)"SELECTbook_id,book_name,publish_company,author,priceFROMbook$",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%-15s\n","book_id","book_name","publish_company","author","price");

while(SQLFetchScroll(hsmt,SQL_FETCH_NEXT,0)!

=SQL_NO_DATA_FOUND)

{

printf("%-15s%-15s%-15s%-15s%-15s\n",szMscID,szMscName,szMscCompany,szMscLongitude,szMscLatitude);

}

}

else

{

printf("wrong!

6\n");

}

}

voiddeleteDB()

{

sret=SQLExecDirect(hsmt,(SQLCHAR*)"DELETEFROMbook$WHEREbook_id='dep04_b001_01'",SQL_NTS);

if(sret==SQL_SUCCESS||sret==SQL_SUCCESS_WITH_INFO)

{

printf("deletesuccessful!

\n");

}

else

{

printf("wrong!

7\n");

}

}

voidupdateDB()

{

sret=SQLExecDirect(hsmt,(SQLCHAR*)"updatebook$setbook_id='dep04_b001_aa'WHEREbook_id='dep04_b001_02'",SQL_NTS);

if(sret==SQL_SUCCESS||sret==SQL_SUCCESS_WITH_INFO)

{

printf("updatesuccessful!

\n");

}

else

{

printf("wrong!

8\n");

}

}

voidinsertDB()

{

sret=SQLExecDirect(hsmt,(SQLCHAR*)"INSERTINTObook$VALUES('dep04_b001_01','计算机基础','清华大学出版社','洪涛',16)",SQL_NTS);

if(sret==SQL_SUCCESS||sret==SQL_SUCCESS_WITH_INFO)

{

printf("insertsuccessful!

\n");

}

else

{

printf("wrong!

9\n");

}

}

voidrenewHSMT()

{

SQLFreeHandle(SQL_HANDLE_STMT,hsmt);

sret=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hsmt);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1