Catherine
实验四 数据库接口实验-1
一、 实验内容
以教科书第四章关于SQL语言相关内容为基础,课后查阅、自学ODBC接口有关内容,
包括ODBC的体系结构、工作原理、数据访问过程、主要API接口的语法和使用方法等。
以实验二建立的学生数据库为基础,编写 C语言(或其它支持ODBC接口的高级程序设计语言) 数据库应用程序,按照如下步骤访问数据库
a) Step1. ODBC初始化,为ODBC分配环境句柄 b) Step2. 建立应用程序与ODBC数据源的连接
c) Step3. 利用SQLExecDirect语句,实现数据库应用程序对数据库的建立、查询、
修改、删除等操作 d) Step4. 检索查询结果集 e) Step5. 结束数据库应用程序
1
二、 实验要求
要求所编写的数据库访问应用程序中使用到以下主要的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 ;
三、 实验环境
Windows 7系统
mysql数据库管理平台
visual studio C++编程平台(codeblocks或者devc++)
四、实验步骤
1、ODBC的体系结构、工作原理、数据访问过程、主要API接口的语法和使用方法等。 以实验二建立的学生数据库为基础,编写 C语言(或其它支持ODBC接口的高级程序设计语
Catherine
言) 数据库应用程序,按照如下步骤访问数据库。
a) Step1. ODBC初始化,为ODBC分配环境句柄
安装mysql-connector-odbc-5.3.4-winx64
2
再转到系统DSN,点击“添加”,从“创建数据源”列表中选择刚安装的驱动。
b) Step2. 建立应用程序与ODBC数据源的连接。
DSN:数据源名称
用户DSN:对当前用户可见,只能用于当前计算机上的数据源。 系统DSN:对当前计算机上所有的用户可见,包括NT服务器。 文件DSN:可有安装了相同驱动程序的用户共享的数据源。
设置用户DSN,连接到本地mysql的数据库。
Catherine
3
为了防止在程序运行后中文数据乱码,请将设置中的编码格式“character set”设置为gb2312.如下图:
Catherine
4
连接成功。
c) Step3:配置VS环境:
1、新建一个工程,随便写一个helloworld,目的是就是让工程下的“debug”文件夹出现 2、把D:\\Program Files\\MySQL\\MySQL Server 5.6\\lib下面的libmysql.dll复制到工程的debug文件夹里面
3、接下来要设置一些引用文件的环境变量,首先,点击项目->属性->vc++目录。 然后“include目录”那把“C:\\Program Files\\MySQL\\MySQL Server 5.6 \\include”给加进来 再然后“lib目录”那里把“C:\\Program Files\\MySQL\\MySQL Server 5.6 \\lib”也一起加进来
d) Step4. 利用SQLExecDirect语句,实现数据库应用程序对数据库的建立、查询、
修改、删除等操作、检索查询结果集。
Catherine
实验代码:
#include
#pragma comment(lib,\) #pragma comment(lib, \struct course_cell {
char cno[5]; char cname[20]; int lhour; int credit;
char semester[5]; };
unsigned char sql_select[] = \查询语句
unsigned char sql_dolist[3][100] = { \
('C06','数据库原理',48,3,'')\
cno='C06'\//插入、修改、删除语句
unsigned char do_name[3][10] = { \
void show_course(HDBC hdbc)
//显示course的内容 {
HSTMT hstmt; RETCODE retcode;
long lenOut1, lenOut2, lenOut3, lenOut4, lenOut5; struct course_cell* ccell;
ccell = (struct course_cell*)malloc(sizeof(struct course_cell));
retcode = SQLAllocStmt(hdbc, &hstmt);//SQLALLocStmt;为语句句柄分配内存,
5

