sql嵌入式
⑴ 嵌入式sql的简介
嵌入式SQL(英文: Embedded SQL)是一种将SQL语句直接写入C语言,COBOL,FORTRAN, Ada等编程语言的源代码中的方法。借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。在这一方法中,将SQL文嵌入的目标源码的语言称为宿主语言。
在SQL标准的SQL86(1986年发布)中定义了对于COBOL, FORTRAN, PI/L等语言的嵌入式SQL的规范。在SQL89(1989年发布)规范中,定义了对于C语言的嵌入式SQL的规范。一些大型的数据库厂商发布的数据库产品中,都提供了对于嵌入式SQL的支持。比如Oracle, DB2等。
⑵ SQL是嵌入式语言吗
义:
你所写的是C语言在早期利用高级API,在C语言的源代码中用EXEC SQL include ...这样的方式嵌入进SQL语句,让SQL语句能在C中被执行与认识,这样能让C来控制逻辑流程地执行SQL语句。而在现在,不推荐这种嵌入式SQL了,虽然在 Microsoft SQL Server 2000 中仍然支持用于 C 语言的嵌入式 SQL API,但在 SQL Server 以后的版本中,不再包含在使用此 API 的应用程序上进行编程工作所需要的文件。在 SQL Server 的下一版本中,仍然支持使用用于 C 语言的嵌入式 SQL 编写的现有应用程序的连接,但在以后的版本中也将不再提供这种支持。编写新的应用程序时,请不要使用用于 C 语言的嵌入式 SQL。修改现有应用程序时,强烈建议删除依赖用于 C 语言的嵌入式 SQL 的内容。可以使用 Microsoft ActiveX Data Objects (ADO)、OLE DB 或 ODBC 来代替用于 C 语言的嵌入式 SQL,对 SQL Server 中的数据进行访问。与 OLE DB 这类 COM API 或 ODBC 这类调用级接口相比,嵌入式 SQL 的语法更简单,因此更易于学习和编程。但嵌入式 SQL 不如 OLE DB 或 ODBC 灵活,在用 OLE DB 或 ODBC 精心编写的应用程序中,只需切换驱动程序或提供程序,即可从一个 DBMS 切换到另一个。在编译应用程序(例如开发按需查询工具时)时不识别SQL 语句的环境中,更适合使用 OLE DB 和 ODBC,而实际上,ODBC都很老了。
所以现在都是用的JDBC,ADO去连接数据库,你看的那些实在是太老掉牙了,不要纠结。不过想了解一下,请参考:
嵌入式SQL语句(C语言版):
其实上面这些都是大学里的教程,很古老的,杯具。看下这个回答:挺好!
2.按另一种流传的口头说法:
嵌入式SQL语言 在源代码中用特殊标记 标记SQL代码段,如你说的在方法中string="select * from table"这种放在C#代码中的用引号括起来的句子,也有人称之为嵌入式SQL;
非嵌入式SQL是指调用函数库来完成相应的功能;
另外,提下你的提问很有问题,网络上很多问题本来很简单,但是描述不清,无人回答,建议你看下《提问的艺术》
⑶ C语言中使用嵌入式sql
嵌入式SQL程序的VC+SQL server 2000实现的环境配置
嵌入SQL的C应用程序具体到VC++6.0, SQL Server2000 下调试可分为五步:1、环境初始化;2、预编译;3、编译;4、连接;5、运行。下面就其中重要的的操作方法给以详细说明。
1、环境初始化
(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的安装方式没有安装这此接口;因此,需要把devtools.rar解压到SQLServer的系统日录下(即文件夹devtools中的所有文件);如果操作系统安装在C盘,则SQL Server的系统目录是C:\Program Files\Microsoft SQL Server。(或 在安装Microsoft SQL Server 2000时选择安装Development Tools,为使用嵌入式SQL语言准备必要的头文件和库文件。)
( 2)初始化Visual C++ 6.0编译器环境。在命令行方式下运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
(3)初始化SQL Server的预编译环境。在命令行方式下运行文件:\Devtools\samples\esqlc\setenv.bat。
( 4) VC++6.0环境配置。具体配置分为如下三步[:
①Tools->options->directories->Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。将SQL server自带的用于数据库开发的头文件包含到工程环境中。
②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。将开发用到的包包含到工程中。
③project->Settings->Link->Object/Library Moles,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。
2、预编译
C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安装日录的MSSQL\Binn下。若SQL Server数据库采用的是默任安装方式,则需要把binn.rar的内容拷贝到指定目录下。
Microsoft SQL Server 2000提供的预编译程序nsqlprep.exe,用于对嵌入式SQL程序进行预编译处理,生成C语言源程序.实际上就是将嵌入式SQL程序中的嵌入式SQL语句替换为对运行时库文件Sqlakw32. dll的函数调用,接着运行时库文件调用动态连接库Ntwdblib. dll通过网络来存取Microsoft SQL Server 2000数据库服务器.
预编译程序nsqlprep的常用语法为:
nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password
其中ESQL_File是要预编译的嵌入式SQL程序;/SQLACCESS通知nsqlprep自动地为嵌入式SQL程序中的静态SQL语句创建相应的存储过程;/DB server_name.database_name指明要连接的服务器以及数据库名称;/PASS login.password给出登录名及相应的口令.
下面的程序demo.sqc实现了从数据库服务器hushaobo的数据库pubs中的authors表中读取au_lname为white的人对应的 au_fname 值,并保存到变量first_name 中显示出来。(连接数据库的用户为sa,对应密码为1982)
#include<stdio.h>
void main()
{
EXEC SQL BEGIN DECLARE SECTION;
char first_name[40];
char last_name[]="White";
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO hushaobo.pubs
USER sa.1982;
EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name;
EXEC SQL DISCONNECT ALL;
printf("first name: %s \n",first_name);
}
在命令行下运行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982
则生成demo.c,将该文件添加到VC工程中编译即可。
3、编译,连接与运行
在VC++6.0中创建一个 "WIN32 Console Application"的Proiect,然后将预编译生成的c文件加入Proiect,编译连接即可生成访问SQL Server的可执行程序。 Visual C++ 6.0进行编译连接时需要用到动态链接库SQLakw32.d11与SQLaiw32.d11;尽管这两个文件已经随同binn.rar被拷贝到SQLServer安装目录的MSSQL\Binn文件夹下,但仍然需要把它们的路径加到系统路径变量中,以使得程序运行时能找到它们,具体添加方法如下:
方法1:把这两个文件拷贝到操作系统目录下的system32子目录中。
方法2:我的电脑->属性->高级->环境变量->path->编辑,在变量值中加入路径值;新路径与已有路径间用;间隔。
注意调适程序时,文件名中不要包含cursor,否则可能会出错。
⑷ 交互式SQL与嵌入式SQL有什么不同
1、语言不同
交互式SQL是指在终端交互方式下使用的SQL语言称为交互式SQL;嵌入式SQL是一种将SQL语句直接写入C语言,COBOL,FORTRAN, Ada等编程语言的源代码中的方法。
2、使用不同
交互式SQL是在终端交互方式下使用;嵌入式SQL是嵌入在高级语言的程序中使用。
(4)sql嵌入式扩展阅读:
提供对于嵌入式SQL的支持,需要数据库厂商除了提供DBMS之外,还必须提供一些工具。为了实现对于嵌入式SQL的支持,技术上必须解决以下4个问题:
1、宿主语言的编译器不可能识别和接受SQL文,需要解决如何将SQL的宿主语言源代码编译成可执行码;
2、宿主语言的应用程序如何与DBMS之间悄拿传递数据和消息;
3、如何把对数据的查询结果逐次赋值给宿主语言程序中的变量以供其处理;
4、数据库的数据类型与宿主语言的数据类型有时不完全对应或等价,如何解决必要的数据类型转换问题。
嵌入式SQL源码的处理流程 为了解决上述这些问题,数据库姿盯厂商需要提供一个嵌入式SQL的预编译器,把包含有嵌入式SQL文的宿主语言源码转换成纯宿主语言的代码。
这样一来,源码即可使用宿主语言对应的编译器进行编译。通常情况下,经过嵌入式SQL的预编译之后迹运和,原有的嵌入式SQL会被转换成一系列函数调用。因此,数据库厂商还需要提供一系列函数库,以确保链接器能够把代码中的函数调用与对应的实现链接起来。
⑸ 什么是嵌入式sql应用程序
嵌入式SQL
语言是将
SQL语句
直接嵌入到程序的源代码中,与其他
程序设计语言
语句混合.
嵌入式SQL的用途:它是数据库应用程序的一种开发方法.是一种应用程序进行数据库访问时所采取的编程式
数据库语言
.
⑹ 数据库嵌入式sql编程,求解
题目没有说明表之间的外键关系,那我就默认同名的列名是外键,不清楚你用的编程语言,所以我使用:input作为输入变量
1
select Teacher.Tname,Teacher.Tage,Teacher.Tsex,Work.Salary from Teacher,Work,Department
where Teacher.Tno=Work.Tno and Department.Dno=Work.Dno
and Department.Tno=Teacher.Tno and Work.Salary>:input
2
update Work set Salary=:input from Teacher,Department
where Teacher.Tno=Work.Tno and Department.Dno=Work.Dno
and Department.Tno=Teacher.Tno and Work.Salary<:input
⑺ 嵌入式sql的预处理方式是指
嵌入式sql的预处理方式是指把嵌入的SQL语句处理成函数调用形式。嵌入式SQL实现时,采用预处理方式是识别出SQL语句,并处理成函数调用形式,嵌启亏入式SQL是一种将蠢或SQL语句直接写入C语言,COBOL,FORTRAN,Ada编程语言的源代码中的方悄档神法。