实验五通过嵌入式SQL访问数据库
嵌入式SQL编程和通过ODBC访问数据库知识

嵌入式SQL编程和通过ODBC访问数据库预备知识(供大家学习参考)1)嵌入式SQL编程:嵌入式SQL由SQL语句和C/C++代码组成。
其中SQL语句由预处理器翻译成C或C++的源代码。
对预处理后的源代码进行编译、连接生成可执行程序后方可运行。
●SQL预处理器SQLServer的预处理程序是nsqlprep.exe。
其常用的语法格式如下:nsqlprep 程序文档名⏹nsqlprep详细的语法格式以及参数意义,请看联机帮助。
nsqlprep的语法格式如下:nsqlprep program_file_name [/SQLACCESS | /NOSQLACCESS][/FLAGGER {ENTRY | NONE}] [/DB [server_name.]database_name/PASS {login[.password] | $INTEGRATED}] [/BIND file_name][/MSG file_name] [/NOLOGO] [/PLAN name] [/NOLINES][/user_defined_option]⏹要求程序文档名的后缀为.sqc,可以省略。
⏹预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档名同一个路径下nsqlprep.exe在SQLServer的安装目录的 MSSQL\Binn下。
在本机中SQLServer的安装目录是C:\Program Files\Microsoft SQL Server,nsqlprep.exe在C:\Program Files\Microsoft SQL Server\MSSQL\Binn。
由于默认的安装方式(典型安装)并没有安装应用程序nsqlprep.exe,因此,需要拷贝到该目录下。
●连接方式经预处理后的c文件就可以用c的编译器进行编译连接了。
使用Visual C++ 6.0进行编译连接,连接方式是动态连接,用到动态链接库SQLakw32.dll,sqlaiw32.dll;此两文件已经随同binn.rar的其他内容,被拷贝到C:\Program Files\Microsoft SQL Server\MSSQL\Binn下;但仍然需要把该路径加到系统的路径变量中,以使得程序运行时能找到这两个文件。
数据库的嵌套查询实验

实验报告一、实验内容数据库的嵌套查询实验二、实验目的进一步掌握SQL Server的使用方法,学会利用Transact-SQL语言表达嵌套查询语句,理解相关的SQL语句。
三、实验内容用Transact-SQL表达嵌套查询操作,包括使用IN、比较符、ANY 或ALL和EXISTS等操作符,通过SQL Server查询分析器输入、分析并显示正确结果。
四、实验前准备Courses表:Reports表:Students表:五、实验结果1)求选修了高等数学的学生学号和姓名2)求C1课程的成绩高于张三的学生学号和成绩3)求其他系中比计算机系某一学生年龄小的学生4)求其他系中比计算机系学生年龄都小的学生5)求选修了C2课程的学生姓名6)求没有选修C2课程的学生姓名7)查询选修了全部课程的学生的姓名8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名六、主要实验步骤1)求选修了高等数学的学生学号和姓名select sno,snamefrom students awhere sno in(select snofrom reports bwhere sno=a.sno and cno in(select cnofrom courseswhere cno=o and cname='高等数学'))2)求C1课程的成绩高于张三的学生学号和成绩select sno,gradefrom reportswhere cno=1 and grade>(select gradefrom reportswhere cno=1 and sno=(select snofrom studentswhere sname='张三'))3)求其他系中比计算机系某一学生年龄小的学生select sno,snamefrom studentswhere sdept<>'计算机' and 2012-year(birthday)<any (select 2012-year(birthday)from studentswhere sdept='计算机')4)求其他系中比计算机系学生年龄都小的学生select sno 学号,sname 姓名from studentswhere sdept<>'计算机' and 2012-year(birthday)<all (select 2012-year(birthday)from studentswhere sdept='计算机')5)求选修了C2课程的学生姓名select snamefrom students awhere exists(select *from reportswhere cno=2 and sno=a.sno)6)求没有选修C2课程的学生姓名select snamefrom students awhere not exists(select *from reportswhere cno=2 and sno=a.sno)7)查询选修了全部课程的学生的姓名select snamefrom students awhere not exists(select *from courses bwhere not exists(select *from reportswhere cno=o and sno=a.sno))8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名select distinct sno,snamefrom students awhere not exists(select *from reports bwhere sno=2 and not exists(select *from reportswhere sno=a.sno and cno=o))七、实验出现的问题和解决办法出现的问题:查询文件关闭后开启执行出现“对象名无效”错误解决方法:(1)通过鼠标选择可用数据库为Teach数据库,即对象数据库;(2)利用SQL语句“USE Teach”即“USE ”+数据库名称指定对象数据库。
嵌入式sql

实验四:访问数据库一、实验目的利用ODBC和任意一种高级语言,编写一段访问数据库的程序。
要求该程序可以实现查询,插入、删除和更新功能。
二、实验代码这次试验是使用C#编写的,界面与代码如下:string connString = "Data Source=(local);Initial Catalog=Factory;Integrated Security=True;";SqlConnection connection = new SqlConnection(connString);connection.Open();string SCommand = "select * from 工作人员表;SqlDataAdapter adapter = new SqlDataAdapter(SCommand, connection);DataSet DSet = new DataSet();adapter.Fill(DSet, "工作人员表");dataGridView1.AutoGenerateColumns = true;dataGridView1.DataSource = DSet.Tables[0].DefaultView;connection.Close();string connString = "Data Source=(local);Initial Catalog=Factory;Integrated Security=True;";SqlConnection connection = new SqlConnection(connString);connection.Open();if (textBox1.Text.Length == 0){linkLabel1.Visible = true;}else if (textBox2.Text.Length == 0){linkLabel1.Visible = false;linkLabel2.Visible = true;}else{linkLabel1.Visible = false;linkLabel2.Visible = false; ;string data = string.Format("insert into 工作人员表values('" + textBox1.Text + "','" + textBox2.Text + "','" + comboBox1.Text + "','{0}','" + comboBox2.Text +"')",dateTimePicker1.Value.ToString("yyyy/MM/dd")); //写成comboBox1.SelectedText不行,记得区分SqlCommand com = new SqlCommand(data, connection);int m = com.ExecuteNonQuery();if (m != 0)MessageBox.Show("插入成功!");elseMessageBox.Show("不好意思,插入不成功,请重新插入!");}connection.Close();string connString = "Data Source=(local);Initial Catalog=Factory;Integrated Security=True;";SqlConnection connection = new SqlConnection(connString);connection.Open();string id = dataGridView2.CurrentRow.Cells["人员编号"].Value.ToString();//string data = "delete from 工作人员表where 人员编号? = '" + id + "'";SqlCommand com = new SqlCommand(data, connection);int m = com.ExecuteNonQuery();if (m != 0)MessageBox.Show("删¦除成功!");elseMessageBox.Show("不好意思,删除不成功,请重新删¦除!");this.dataGridView2.Rows.Remove(this.dataGridView2.CurrentRow);//connection.Close();string connString = "Data Source=(local);Initial Catalog=Factory;Integrated Security=True;";SqlConnection connection = new SqlConnection(connString);connection.Open();string人员编号= dataGridView3.CurrentRow.Cells["人员编号"].Value.ToString();//string姓名= dataGridView3.CurrentRow.Cells["姓名"].Value.ToString();string性别= dataGridView3.CurrentRow.Cells["性别"].Value.ToString();DateTime出生日期=Convert.ToDateTime(dataGridView3.CurrentRow.Cells["出生日期"].Value.ToString().Trim());// DateTime 出生日期= Convert.ToDateTime(dataGridView3.CurrentRow.Cells["出生日期"].Value.ToString()); ////this.dataGridView3.CurrentRow.Cells["出生日期"].Value.ToString();string职务= dataGridView3.CurrentRow.Cells["职务"].Value.ToString();string data = string.Format("update 工作Á人员表set 人员编À号= '" + 人员编À号+ "',姓名= '" + 姓名+ "',性别= '" + 性别+ "',出生日期={0},职务= '" + 职务?+ "' where 人员编号= '" + 人员编号+ "'",出生日期.ToString("yyyy/MM/dd"));SqlCommand com = new SqlCommand(data, connection);int m = com.ExecuteNonQuery();if (m != 0)MessageBox.Show("更新成功!");elseMessageBox.Show("不好意思,更新不成功,请重新更新!");this.dataGridView3.Update();connection.Close();三、运行结果查询:插入:四、实验总结要求个人填写(实验中发现的问题和解决的办法)这次实验是对嵌入式SQL的综合运用,我使用的是C#语言。
嵌入式SQL实验指导

实验6 嵌入式SQL通过这个实验,我们首先熟悉了嵌入式SQL编程,并可以自己动手编写一个小型的数据库应用程序。
而且能够大体了解我们平时在日常生活中看到的一些数据库应用程序是如何开发出来的。
做完这个实验,你会发现那些数据库程序也并不是十分高深。
这是我们最后一个实验,也是工作量最大的一个实验,大约需要2-3次实验课的时间。
希望同学们认真完成。
实验平台1.OS:WindowsXP2.DBMS:SQLServer2000piler:Visual C++ 6.0(大家可能没有接触过VC++,但并不妨碍我们做这个实验,因为在这个实验中我们只利用它的编译功能。
)预备知识1)嵌入式SQL编程:嵌入式SQL由SQL语句和C/C++代码组成。
其中SQL语句由预处理器翻译成C或C++的源代码。
对预处理后的源代码进行编译、连接生成可执行程序后方可运行。
●SQL预处理器SQLServer的预处理程序是nsqlprep.exe。
其常用的语法格式如下:nsqlprep 程序文档名⏹要求程序文档名的后缀为.sqc,可以省略。
⏹预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档名同一个路径下nsqlprep.exe在SQLServer的安装目录的MSSQL\Binn下。
在本机中SQLServer的安装目录是C:\Program Files\Microsoft SQL Server,nsqlprep.exe在C:\Program Files\Microsoft SQL Server\MSSQL\Binn。
由于默认的安装方式(典型安装)并没有安装应用程序nsqlprep.exe,因此,需要你把我提供的binn文件夹,拷贝到该目录下覆盖原来的Binn。
●连接方式经预处理后的c文件就可以用c的编译器进行编译连接了。
使用Visual C++ 6.0进行编译连接,连接方式是动态连接,用到动态链接库SQLakw32.dll,sqlaiw32.dll;此两文件已经随同binn.rar的其他内容,被拷贝到C:\Program Files\Microsoft SQL Server\MSSQL\Binn下;但仍然需要把该路径加到系统的路径变量中,以使得程序运行时能找到这两个文件。
实验五通过嵌入式SQL访问数据库

实验五:通过嵌入式SQL访问数据库1 实验目的熟悉通过嵌入式SQL(主语言为C语言)编程访问数据库。
2 实验平台和实验工具在KingbaseES数据库管理系统上,通过C语言编写访问数据库的应用程序来对数据库进行各种数据操作。
编程工具自选。
3 实验内容和要求熟悉RDBMS的预编译程序。
通过嵌入式SQL编程访问数据库的基本步骤对学生课程数据库中的表,完成下面功能(你也可以自己给出功能要求):1. 查询某一门课程的信息。
要查询的课程由用户在程序运行过程中指定,放在主变量中。
2. 查询选修某一门课程的选课信息,要查询的课程号由用户在程序运行过程中指定,放在主变量中,然后根据用户的要求修改其中某些记录的成绩字段。
要求:提交源程序并标识必要的注释。
保证程序能正确编译和运行,认真填写实验报告。
3.1 嵌入式SQL要求:将一段连续的SQL操作写成嵌入到C程序中的程序,调试程序,使得程序能完成一项复杂的数据处理功能,并提交程序。
嵌入式SQL由SQL语句和C/C++代码组成。
其中SQL语句由预处理器翻译成C或C++的源代码。
对预处理后的源代码进行编译、链接生成可执行程序后方可运行。
3.2 KingbaseES预处理器KingbaseES的预处理程序是esqlc.exe。
其常用的语法格式如下:■esqlc详细的语法格式以及参数意义,请参阅联机帮助。
■要求程序文档名的后缀为.pc,可以省略。
■预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档同一个路径下。
esqlc.exe存在KingbaseES的安装目录的Basesoft\KingbaseES\4.1\bin下。
例如,KingbaseES的安装目录是C:\Program Files,那么eslqc.exe则在C:\Program Files\Basesoft\KingbaseES\ 4.1\bin下。
注意:在安装SQL Server时并不会同时安装预编译应用程序nsqlprep.exe,需要将此文件另拷贝至安装目录下;而KingbaseES在安装时会同时安装此文件,因此不需要另外拷贝。
实验五通过嵌入式SQL访问数据库

数据库系统概论课程实验报告班级计科二班学号2013221104210076 姓名曹力一,各种方式简介ESQL嵌入式sql(embedded sql)是将sql语句嵌入到程序设计语言中,如C、C++和java,这些称之为主语言。
将sql嵌入到高级语言中,sql负责数据的处理,高级语言负责程序的控制。
这时候程序会有两种不同的计算机模型语言,两者是如何通信呢?1、向主语言传递sql执行的状态信息,主语言通过此信息来控制程序流程。
主要通过SQL通信区(SQL Communication Area)SQLCA实现,SQLCA中有一个变量SQLCODE用来存放执行SQL所返回的代码,成功则返回预定义代码SUCCESS,否则返回错误代码。
2、主语言提供参数,主要用主变量(Host Variable)实现。
主变量按功能不同可以分为,输入主变量和输出主变量。
一个主变量附带一个指示变量,它可以检查变量是否为空值,是否被截断。
3、SQL将查询的结果交给主语言处理,主要通过主变量和游标实现。
SQL是面向集合的,一条sql可能产生多条记录。
而主语言是面向记录的,一组主变量只能处理一条记录。
所以游标的得来就是处理SQL得到的数据集合,让其指向某一条记录。
特点⏹⒈综合统一⏹ 2. 高度非过程化⏹ 3. 面向集合的操作方式⏹ 4. 同一种语法结构提供两种使用方式⏹ 5. 语言简捷,易学易用三、PL/SQLPL/SQL(procedural language/SQL)是编写数据库存储过程的一种过程语言。
它结合了SQL的数据操作能力和过程话语言的流程控制能力,是SQL的过程化扩展。
格式如下:create procedure 过程名(参数1,参数2,……)s<PL/SQL>块;优点:⏹a提供了在服务器端快速执行SQL语句的有效途径⏹降低了客户机和服务器间的通信量⏹有利于集中控制⏹方便维护四、ODBCODBC可以连接不同的RDBMS,是微软公司开放服务体系中有关数据库的一个组成部分,它建立了一组规范,并提供了一组访问数据库的标准API。
嵌入式SQL访问数据库实验报告

黄冈师范学院提高型实验报告实验课题嵌入式SQL访问数据库(实验类型:□综合性■设计性□应用性)实验课程数据库系统概论实验时间2012年5月25日学生姓名邵旭东专业班级信息1001班学号201021240106一、实验目的和要求1. 编写嵌入式C程序,编程实现了对“学生课程数据库”的访问和对Student表中年龄进行更新。
2. 装SQL Server2000和Visual C++程序。
3、将一段连续的SQL操作写成嵌入到C程序中的程序,调试程序,使得程序能完成一项复杂的数据处理功能,并提交程序。
二、实验条件R429三星笔记本电脑一台。
三、实验原理分析四、实验方案或步骤1.初始化编译环境将SQL安装光盘内的DEVTOOLS文件夹复制到SQL的安装目录下(!!默认下为C:\Program Files\Microsoft SQL Server\),执行.\DEVTOOLS\SAMPLES\ESQLC\目录中的UNZIP_ESQLC.EXE文件(!!点击finish,默认解压到当前目录下!!),解压预编译必要的头文件和库文件,然后运行解压出来的批处理文件setenv.bat初始化SQL预编译环境(这项操作实际上设置两个环境变量)。
接下来添加SQL预编译接口,将安装光盘中X86\BINN中的nsqlprep.exe,sqlaiw32.dll,sqlakw.32.dll复制到SQL安装目录(!!默认下为C:\Program Files\Microsoft SQL Server\)中的\MSSQL\Binn\(注:\MSSQL\Binn\改为:\MSSQL\Binn;)目录下,并将C:\Program Files\Microsoft SQL Server\MSSQL\Binn添加到环境变量中(方法是:右击我的电脑,点击我的电脑属性,点击高级,点击环境变量,点击path ,粘贴在‘;’号后)。
SQL设置完了,现在开始设置VC编译环境。
实验五、通过嵌入式SQL访问数据库 (2)

实验报告单院(系):计算机学院专业:计算机科学与技术(嵌入式方向)班级:12计科5班姓名:陶昕星学号:34同组人:实验室:S4305组号:日期: 4.25课程:数据库原理指导教师:邱长春成绩:实验项目编号:05 实验项目名称:嵌入式SQL 一、实验目的1.熟悉通信区、游标的概念;2.理解嵌入式SQL的处理过程;3.For personal use only in study and research; not for commercial use4.5.掌握SQL与主语言之间的通信机制;6.熟悉通过嵌入式SQL访问数据库二、实验环境For personal use only in study and research; not for commercial useSQL Server2000三、实验学时2学时四、实验内容及步骤1. 查看SQL Server的参考文献,找出嵌入式SQL编程所需的各种组件,如下图所示:2.通过自定义的方式安装SQL Server,确保上述组件安装成功,并找出这些组件所在的目录路径,如下面的图示:3.创建一个数据库,本例的数据库为stu,并将其密码设置为sa;4.使用文本编辑器编写一个嵌入式SQL程序,扩展名为sqc。
本例的嵌入式SQL程序名称为EmbedSql.sqc,程序如下:#include <stdio.h>#include <stdlib.h>EXEC SQL INCLUDE sqlca;{EXEC SQL BEGIN DECLARE SECTION;//主变量char lname[40];char fname[20];EXEC SQL END DECLARE SECTION;printf("This is my Embedded SQL for C application\n");EXEC SQL CONNECT TO WIN-CF7AKA VRCJA.pubs USER sa.sa;//连接到数据库if (SQLCODE == 0){printf("Connection to SQL Server established\n");}else{// 连接DBMS错误printf("ERROR: Connection to SQL Server failed\n");return (1);}EXEC SQL DECLARE selCursor CURSOR FORSELECT au_lname, au_fnameFROM authors;EXEC SQL OPEN selCursor ;for ( ; ; ) {/* Fetch next row of the result table */EXEC SQL FETCH selCursor INTO :lname,:fname;if (SQLCODE == 0){printf("lname:%s/n",lname);printf("fname:%s/n",fname);}elsebreak;/* display data */}printf ("SQL error %d\n",sqlca->sqlcode);//若照书上写sqlca.sqlcode编译报语法错done:/* Close the cursor before completing*/EXEC SQL WHENEVER SQLERROR continue;EXEC SQL CLOSE providerCursor;EXEC SQL COMMIT WORK RELEASE;//断开连接EXEC SQL DISCONNECT ALL;return 0;}5. 实例工程的构建:(1)打开VC6.0,新建名为esqlea1的WIN32 Console Application工程文件;(2)把EmbedSql.sqc拷贝到工程的目录文件夹下;(3)将上述组件拷贝到工程的目录文件夹下;(4)在工具菜单下选择Options,再选择Directories,在Show Directories for 下拉框中选择Include files,在Directories编辑框中输入SQLServer开发工具的头文件路径;选择library files,在Directories编辑框中输入SQLServer开发工具的库文件路径;选择可执行文件,在Directories编辑框中输入SQLServer开发工具的可执行文件路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EXEC SQL CONNECT TO PC-20100228-1037\YANG StudentDB;;
/*连接数据*/
EXEC SQL DECLARE SX CURSOR FOR /*定义游标*/
SELECT Sno, Sname, Ssex, Sage /*SX对应语句的执行结果*/
FROM Student
}
4)关闭C源文件MyEsql.c,并将其备份,然后更改源文件的扩展名为“.sqc”。
5)在命令行下运行 ESQL 预编译程序 nsqlprep.exe 程序:
nsqlprep MyEsql.sqc 若运行成功,则生成 MyEsql.c,将该文件添加到 VC 工程中编译即可。
4.2 编译
4.3 连接与运行
WHERE CURRENT OF SX ;
}
/*对当前游标指向的学生年龄进行更新*/
}
EXEC SQL CLOSE SX;
/*关闭游标SX不再和查询结果对应*/
EXEC SQL COMMIT WC SQL DISCONNECT StudentDB;;
/*断开数据库连接*/
1、向主语言传递 sql 执行的状态信息,主语言通过此信息来控制程序流程。主 要通过 SQL 通信区(SQL Communication Area)SQLCA 实现,SQLCA 中有 一个变量 SQLCODE 用来存放执行 SQL 所返回的代码,成功则返回预定义代码 SUCCESS,否则返回错误代码。
char HSname[22];
char HSsex[4];
int HSage;
int NEWAGE;
long SQLCODE;
EXEC SQL END DECLARE SECTION; /*主变量说明结束*/
EXEC SQL INCLUDE sqlca;
/*定义SQL通信区*/
/*************************************************************************/
2、主语言提供参数,主要用主变量(Host Variable)实现。主变量按功能不同 可以分为,输入主变量和输出主变量。一个主变量附带一个指示变量,它可以检 查变量是否为空值,是否被截断。
3、SQL 将查询的结果交给主语言处理,主要通过主变量和游标实现。SQL 是面 向集合的,一条 sql 可能产生多条记录。而主语言是面向记录的,一组主变量只 能处理一条记录。所以游标的得来就是处理 SQL 得到的数据集合,让其指向某 一条记录。
格式如下: create procedure 过程名(参数 1,参数 2,……) s <PL/SQL>块; 优点:
a 提供了在服务器端快速执行 SQL 语句的有效途径 降低了客户机和服务器间的通信量 有利于集中控制 方便维护
四、ODBC ODBC 可以连接不同的 RDBMS,是微软公司开放服务体系中有关数据库的一个 组成部分,它建立了一组规范,并提供了一组访问数据库的标准 API。作为规范 它可以规范应用开发和规范 RDBMS 应用接口。
5. 实验内容与完成情况:
6. 实验小结
在解决很多复杂问题时,不仅需要 sql 语言,也需要高级语言配合完成,这就要求我们 掌握如何在高级语言中嵌入和连接 sql 语句块。
通过嵌入式 SQL 访问数据库的实验,学会了用 C 语言实现嵌入式 SQL 访问数据库的环境 配置。
特点
⒈ 综合统一
2. 高度非过程化 3. 面向集合的操作方式 4. 同一种语法结构提供两种使用方式 5. 语言简捷,易学易用
三、PL/SQL
PL/SQL(procedural language/SQL)是编写数据库存储过程的一种过程语言。它 结合了 SQL 的数据操作能力和过程话语言的流程控制能力,是 SQL 的过程化扩 展。
3.2 数据库管理系统:
SQL Server 2000 数据库管理系统
4 实验内容及要求
内容:熟悉 RDBMS 的预编译程序。掌握 SQL Server 2000 的预编译程序 NSQLPREP.EXE 的使用(以课本例题 1 进行调试)。 要求:在本报告中列出程序代码及注释,保证程序能正确编译运行。 嵌入式 SQL 的 C 语言应用程序在 VC++6.0、SQL Server 2000 环境下的调试如下:
2)将动态链接库 SQLAKW32.dll,SQLAIW32.dll 文件拷贝到操作系统目录下的子 目录 C:\WINDOWS\system32 中。 3)创建嵌入式 SQL 的 C 源文件 Esql.c
#include <stdio.h> #include <stdlib.h> EXEC SQL BEGIN DECLARE SECTION; /*主变量说明开始*/ char deptname[22]; char HSno[10];
4.1 预编译
1)复制 ESQL 预编译文件及库文件
C 语言编译程序不能识别应用程序中的 SQL 语句,需要经过预处理程序将其转换成 C 语 句 。 SQL Server 的 预 处 理 程 序 是 nsqlprep.exe 。 nsqlprep.exe 在 SQL Server 安 装 日 录 的 MSSQL\Binn 下。若 SQL Server 数据库采用的是默任安装方式,则需要把 nsqlprep.exe、 SQLAIW32.DLL、SQLAKW32.DLL 三个文件拷贝到 MSSQL\Binn 目录下。
int main(void)
/*C语言主程序开始*/
{
int count = 0;
char yn;
/*变量yn代表yes或no*/
printf("Please choose the department name(CS/MA/IS): ");
scanf("%s", deptname);
/*为主变量deptname赋值*/
printf("%-10s %-22s %-4s %-10d\n", HSno, HSname, HSsex, HSage);
/*打印查询结果*/
printf("UPDATE AGE(y/n)?"); /*询问用户是否要更新该学生的年龄*/
do{
scanf("%c",&yn);
}
while(yn != 'N' && yn != 'n' && yn != 'Y' && yn != 'y');
六、OLEDB 不仅拥有 ODBC 的功能,还有面向非 SQL 数据类型的通路。
二,实验
1 实验题目:实验五 通过嵌入式 SQL 访问数据库
2.实验目的
熟悉通过嵌入式 SQL(主语言 C 语言)编程访问数据库
3 实验平台
3.1 操作系统:
Windows 2000 或者 Windows XP 注:使用 Professional 版的操作系统建议安装数据库管理系统的教学版,Server 版的操作系统建议安装数据库管理系统的企业版。
数据库系统概论课程实验报告
班级 计科二班 学号 2013221104210076 姓名
曹力
一, 各种方式简介
ESQL
嵌入式 sql(embedded sql)是将 sql 语句嵌入到程序设计语言中,如 C、C++ 和 java,这些称之为主语言。将 sql 嵌入到高级语言中,sql 负责数据的处理, 高级语言负责程序的控制。这时候程序会有两种不同的计算机模型语言,两者是 如何通信呢?
if (sqlca->sqlcode != 0) /* sqlcode != 0,表示操作不成功*/
{printf("数据处理结束!");
break;
/*利用SQLCA中的状态信息决定何时退出循环*/}
if(count++ == 0)
/*如果是第一行的话,先打出行头*/
printf("\n%-10s %-22s %-4s %-10s\n", "Sno", "Sname", "Ssex", "Sage");
if (yn == 'y' || yn == 'Y')
/*如果选择更新操作*/
{
printf("INPUT NEW AGE:");
scanf("%d",&NEWAGE);
/*用户输入新年龄到主变量中*/
EXEC SQL UPDATE Student
/*嵌入式SQL*/
SET Sage = :NEWAGE
WHERE Sdept = :deptname;
EXEC SQL OPEN SX;
/*打开游标SX便指向查询结果的第一行*/
for (;;)
/*用循环结构逐条处理结果集中的记录*/
{
EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage;
/*推进游标,将当前数据放入主变量*/
ODBC 的目的:提供应用系统与数据库平台的独立性。 使用 ODBC 可以使应用系统的开发与数据库平台的选择、数据库设计等
工具并行进行。 可以在现有的数据库系统上开发应用系统,然后移植到需要的数据库平台
上。
五、JDBC JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言 编写的类和接口组成。