数据库实验报告6

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一. 实验内容、步骤以及结果

1.ODBC配置以及程序调试:(50分)

(1)配置一个ODBC数据源,要求数据源名称:student,其中包含s(学生信息)表。

1.用系统工具配置ODBC,点击“添加”:

2.出现以下对话框,选中SQL Sever,点击完成

3.在出现的对话框中设置属性,如图,点击下一步,点击下一步后出现如下,更改默认数据库,点击下一步。

4.在出现的对话框中点击测试连接后出现测试成功的对话框,点击确定退出ODEC数据源管理器。

(2)阅读并运行实验给出的例子程序,理解ODBC编程,要求简单写出自己对这段程序的理解或者流程图,并且请给出程序运行结果示例图。

定义句柄,变量

初始化环境

建立连接

初始化语句句柄

执行语句

结果集中处理

输出,释放句柄

结果如下

实例运行结果如下:

2.参考给出的ODBC编程示例,使用ODBC技术,编写一个简单的程序,包含对数据库

SPJ的连接,查询,插入,修改和删除。(50分)插入:

查询:

修改:

删除:

代码:

#include"stdafx.h" #include #include

#include

#include #include #include

#include

using namespace std;

int main()

{

SQLHENV henv; //环境句柄

SQLHDBC hdbc; //连接句柄

SQLHSTMT hstmt; //语句句柄

char sql_order[100];

SQLRETURN ret;

SQLCHAR sno[50], sname[50], ssex[50], sbirth[50], sdept[50];

SQLINTEGER cbsno = 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", SQL_NTS, (SQLCHAR*)"123", SQL_NTS);

if (!SQL_SUCCEEDED(ret))

return -1;

ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

int demo;

while (1)

{

cout << "1.insert " << "2.select " << "3.delete " << "4.update " << "0.exit"<

cin >> demo;

if (demo == 0)

{

break;

}

else if (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 << "删除成功" << endl;

}

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

else if (demo == 4)

{

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 << "删除成功" << endl;

}

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

}

else if (demo == 2)

{

printf("输入SQL查询语句\n");

getchar();

gets_s(sql_order);

ret = SQLExecDirect(hstmt, (SQLCHAR*)sql_order, SQL_NTS);

if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)

{

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);

}

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

}

else

{

printf("依次输入插入的学号,姓名,性别,生日,学院\n");

scanf("%s%s%s%s%s", sno, sname, ssex, sbirth, sdept);

ret = SQLPrepare(hstmt, (SQLCHAR*)"insert into S values(?,?,?,?,?)",

相关文档
最新文档