数据库实验报告6Word格式文档下载.docx
《数据库实验报告6Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库实验报告6Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
(50分)
(1)配置一个ODBC数据源,要求数据源名称:
student,其中包含s(学生信息)表。
1.用系统工具配置ODBC,点击“添加”:
2.出现以下对话框,选中SQLSever,点击完成
3.在出现的对话框中设置属性,如图,点击下一步,点击下一步后出现如下,更改默认数据库,点击下一步。
4.在出现的对话框中点击测试连接后出现测试成功的对话框,点击确定退出ODEC数据源管理器。
(2)阅读并运行实验给出的例子程序,理解ODBC编程,要求简单写出自己对这段程序的理解或者流程图,并且请给出程序运行结果示例图。
定义句柄,变量
初始化环境
建立连接
初始化语句句柄
执行语句
结果集中处理
输出,释放句柄
结果如下
实例运行结果如下:
2.参考给出的ODBC编程示例,使用ODBC技术,编写一个简单的程序,包含对数据库SPJ的连接,查询,插入,修改和删除。
插入:
查询:
修改:
删除:
代码:
#include"
stdafx.h"
#include<
Windows.h>
iostream>
#include<
sql.h>
sqlext.h>
sqltypes.h>
string>
cstdio>
usingnamespacestd;
intmain()
{
SQLHENVhenv;
//环境句柄
SQLHDBChdbc;
//连接句柄
SQLHSTMThstmt;
//语句句柄
charsql_order[100];
SQLRETURNret;
SQLCHARsno[50],sname[50],ssex[50],sbirth[50],sdept[50];
SQLINTEGERcbsno=SQL_NTS,cbsname=SQL_NTS,cbssex=SQL_NTS,cbsbirth=SQL_NTS,cbsdept=SQL_NTS;
ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&
henv);
ret=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
ret=SQLAllocHandle(SQL_HANDLE_DBC,henv,&
hdbc);
ret=SQLConnect(hdbc,(SQLCHAR*)"
student"
SQL_NTS,(SQLCHAR*)"
sa"
123"
SQL_NTS);
if(!
SQL_SUCCEEDED(ret))
return-1;
ret=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&
hstmt);
intdemo;
while
(1)
{
cout<
<
"
1.insert"
<
2.select"
3.delete"
4.update"
0.exit"
endl;
cin>
>
demo;
if(demo==0)
{
break;
}
elseif(demo==3)
cout<
输入删除语句"
endl;
getchar();
gets_s(sql_order);
ret=SQLExecDirect(hstmt,(SQLCHAR*)sql_order,SQL_NTS);
if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO)
{
cout<
删除成功"
}
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
elseif(demo==4)
输入更新语句"
elseif(demo==2)
printf("
输入SQL查询语句\n"
);
ret=SQLBindCol(hstmt,1,SQL_C_CHAR,sno,50,0);
ret=SQLBindCol(hstmt,2,SQL_C_CHAR,sname,50,0);
ret=SQLBindCol(hstmt,3,SQL_C_CHAR,ssex,50,0);
ret=SQLBindCol(hstmt,4,SQL_C_CHAR,sbirth,50,0);
ret=SQLBindCol(hstmt,5,SQL_C_CHAR,sdept,50,0);
while(ret=SQLFetch(hstmt)!
=SQL_NO_DATA_FOUND)
printf("
%s%s%s%s%s\n"
sno,sname,ssex,sbirth,sdept);
else
依次输入插入的学号,姓名,性别,生日,学院\n"
scanf("
%s%s%s%s%s"
ret=SQLPrepare(hstmt,(SQLCHAR*)"
insertintoSvalues(?
?
)"
ret=SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,50,0,sno,0,&
cbsno);
ret=SQLBindParameter(hstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,50,0,sname,0,&
cbsname);
ret=SQLBindParameter(hstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,50,0,ssex,0,&
cbssex);
ret=SQLBindParameter(hstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,50,0,sbirth,0,&
cbsbirth);
ret=SQLBindParameter(hstmt,5,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,50,0,sdept,0,&
cbsdept);
ret=SQLExecute(hstmt);
if(ret==0)
插入成功,请前往SQL数据库查看\n"
}
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
}