嵌入式SQL的应用
- 格式:doc
- 大小:28.00 KB
- 文档页数:4
数据库SQLite在嵌入式系统中的应用※■华南理工大学倪天龙张贤高王培62005.10获得一个callback函数的指针,可以调用aqlite_exec()。
使用完毕后可以调用sqlite_close()来断开与数据库的连接。
2SQLite在ARM-Linux平台上的交叉编译要使SQLite在ARMLinux平台上能够顺利运行,就要先对SQLite进行交叉编译,具体步骤如下[2]:①下载SQLite源代码。
可以到相关网站(如ht-tp:///download.html)下载SQLite源代码包,目前可以下载到sqlite-3. 2. 1. tar. gz(1351842bytes)或者sqlite-2.8.16.tar.gz(981834 bytes)。
将下载的代码包解开,生成sqlite目录,另外新建一个与sqlite目录平行的同级目录,如sqlite-arm-Linux。
②确保PATH变量中已经包含交叉编译工具arm-Linux-gcc。
可用“echo$PATH”命令查看。
如果PC机的Linux操作系统尚未安装交叉编译工具arm-Linux-gcc,那么要先在网上(如/)下载进行安装,并把arm-Linux-gcc添加到PATH变量中。
③修改sqlite/src/sqliteInt.h。
为了在arm-Linux下能正常运行SQ lite,要对sqlite/src/sqliteInt.h进行修改。
在代码#ifndef INTPTR_TYPE#if SQLITE_PTR_SZ==4#define INTPTR_TYPE int#else#define INTPTR_TYPE long long#endif前加上一句:#define SQLITE_PTR_SZ 4这样后面的“typedef INTPTR_TYPE ptr;”就是定义的“int”类型,而不是“long long”。
④修改configure文件,进行一些配置。
DB2sql——动态sql,静态sql,嵌⼊式sqlDB2中的prepare和bind要解释这些还关系到好⼏个概念:1. 动态SQL和静态SQL:在程序运⾏的时候才能确定执⾏计划的SQL是动态的;在程序编译的时候就已经可能知道执⾏计划的是静态的静态 SQL:静态 SQL 语句⼀般⽤于嵌⼊式 SQL 应⽤中,在程序运⾏前,SQL 语句必须是确定的,例如 SQL 语句中涉及的列名和表名必须是存在的。
静态 SQL 语句的编译是在应⽤程序运⾏前进⾏的,编译的结果会存储在数据库内部。
⽽后程序运⾏时,数据库将直接执⾏编译好的 SQL 语句,降低运⾏时的开销。
动态 SQL:动态 SQL 语句是在应⽤程序运⾏时被编译和执⾏的,例如,使⽤ DB2 的交互式⼯具 CLP 访问数据库时,⽤户输⼊的 SQL 语句是不确定的,因此 SQL 语句只能被动态地编译。
动态 SQL 的应⽤较多,常见的 CLI 和 JDBC 应⽤程序都使⽤动态 SQL。
也就是说动态sql可以还没有表名就可以执⾏了2. prep/precompile:不要把prep看成是prepare了,这⾥是预编译3. 嵌⼊式SQL:这个就没办法找到很好的定义了。
⼀般来说使⽤标准接⼝的程序都是⾮嵌⼊式的,像CLI/JDBC/ODBC。
现在只有C和COBOL是⽀持嵌⼊式SQL的了。
⽬前⼤部分应⽤程序都不是嵌⼊式的了。
嵌⼊式sql就是说嵌⼊在代码中的sql,可以直接在代码中操作数据库标准的SQL是⾮过程化的查询语⾔,就具有操作统⼀,⾯向集合,功能丰富,使⽤简单等多项优点,但和程序设计语⾔相⽐,⾼度⾮过程花的优点也造成了它的⼀个缺点:缺少流程控制能⼒,难以实现应⽤业务中的逻辑空值.SQL编程技术可以有效克服SQL语⾔实现复杂应⽤⽅⾯的不⾜.提⾼应⽤系统和数据库管理系统之间的互操作性.接下来再看看:PREPARE:⽬的主要是把动态SQL进⾏解析成标准函数,⽣成package,让其在程序运⾏时⽣成执⾏计划。
嵌入式SQL嵌入式SQL语言把SQL语言嵌入到某种高级语言中使用,利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。
这种方式下使用的SQL语言称为嵌入式SQL (Embedded SQL),而嵌入SQL的高级语言称为主语言或宿主语言。
1.1 嵌入式SQL的一般形式对宿主型数据库语言SQL,DBMS可采用两种方法处理,一种是预编译,另一种是修改和扩充主语言使之能处理SQL语句。
目前采用较多的是预编译的方法。
即由DBMS的预处理程序对源程序进行扫描,识别出SQL语句。
把它们转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。
在嵌入式SQL中,为了能够区分SQL语句与主语言语句,所有SQL语句都必须加前缀EXEC SQL.。
SQL语句的结束标志则随主语言的不同而不同。
例如在PL/1和C中以分号(;)结束;EXEC SQL <SQL 语句> ;在COBOL中以END-EXEC 结束;EXEC SQL < SQL 语句> END-EXEC例如一条交互形式的SQL语句:DROP TABLE Student ;嵌入到C程序中,应写成:EXEC SQL DROP TABLE Student ;嵌入SQL语句根据其作用的不同,可分为可执行语句和说明性语句两种。
可执行语句又分为数据定义,数据控制,数据操纵三种。
在宿主程序中,任何允许出现可执行的高级语言语句的地方,都可以写可执行SQL语句;任何允许出现说明型高级语言语句的地方,都可以写说明性SQL语句。
1.2 嵌入式SQL语句与主语言之间的通信将SQL嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制程序流程。
这时程序中会含有两种不同计算模型的语句,一种是描述性的面向集合的SQL语句,一种是过程性的高级语言语句,它们之间应该如何通信呢?数据库工作单元与源程序工作单元之间的通信主要包括:(1)向主语言传递SQL语句的执行状态信息,使主语言能够据此信息控制程序流程,主要用SQL通信区(SQL Communication Area ,简称SQLCA)实现;(2)主语言向SQL语句提供参数,主要用主变量实现;(3)将SQL语句查询数据库的结果交主语言进一步处理,主要用主变量和游标(Cursor)实现。
嵌入式SQL一、嵌入式SQL 简介嵌入式SQL(英文: Embedded SQL)是一种将SQL 语句直接嵌入到像C 、C++、JA V A 等程序设计语言中的方法。
借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。
在这一方法中,将包含SQL 语言的程序设计语言成为称为宿主语言,简称主语言。
二、嵌入式SQL 的编写流程注:由于嵌入式SQL 的主语言有很多,关系型数据库也有很多,由于时间有限,我就不一一阐述了,这里我只以C 语言和Oracle 数据库为例进行说明,有兴趣的同学可以研究一下相关内容。
1.编写pc 源程序(包含SQL 语句的程序);2.使用Oracle 提供的预编译工具ProC.exe 将内嵌的SQL 语句转换为对Oracle 运行库函数( SQLLIB ) 的调用,并生成C 源代码文件;3.使用C /C++编译工具编译C/C++源文件,生成目标文件;4.使用C/C++链接工具生成可执行文件;5.运行可执行文件。
三、主语言与SQL 语句通信原理将SQL 嵌入到高级语言中混合编程,SQL 语句负责操作数据库,高级语言负责控制程序流程。
这时候程序中含有两种不同计算模型的语句,它们之间如何进行通信呢?1.SQL 语句如何向主程序传递执行状态信息?编写包含SQL 语句的程序***.pc 文件生成用RDBMS 提供的预编译工具编译***.c 文件嵌入式SQL 编写流程例如:在C语言中有这么一个功能需求,如果SQL语言执行成功,我就去执行下一行代码,否则我就退出。
这时就需要知道SQL语句的执行状态了。
在嵌入式SQL语言中,SQL语句是通过SQLCA(SQL通信区)向主程序传递其执行状态的,SQLCA里面有一个变量SQLCODE,根据这个变量,就可以知道SQL语句的执行状态。
如sqlca.sqlcode = 0 表明SQL语句执行成功;sqlca.sqlcode=1403,代表查询语句没有返回值;对于上面的案例,我们可以这样做:执行select * from student;If(sqlca.sqlcode ==0){Printf(“执行成功”);}else{Exit(0);}2.SELECT语句返回的结果怎么交给主程序,主程序如何向SQL语句传递参数。
嵌入式关系数据库的查询语言
嵌入式关系数据库的查询语言是指在嵌入式数据库中使用的查询语言,它可以用来查询和操作数据库中的数据。
常见的嵌入式关系数据库包括SQLite、H2、Derby等。
嵌入式关系数据库的查询语言通常是SQL (Structured Query Language),它是一种标准化的数据库查询语言,
可以用来查询、插入、更新和删除数据库中的数据。
SQL语言具有简单易学、灵活性强、可扩展性好等特点,因此被广泛应用于各种类型的数据库中。
在嵌入式关系数据库中,SQL语言可以用来执行各种类型的查询操作,包括简单的SELECT查询、复杂的JOIN查询、聚合查询、分组查询等。
此外,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的应用
李晓峰;李东;孙鹤
【期刊名称】《自动化技术与应用》
【年(卷),期】2010(029)005
【摘要】数据库应用系统开发中,用高级语言来写数据库应用程序时,可以用ODBC/CLI,也可以用嵌入式SQL.如果是用ODBC/CLI,则你的高级语言程序中调用ODBC/CLI的各种API函数.属于底层开发,用嵌入式SQL方式写程序执行效率更高.用嵌入式SQL的概念和实现的方法,用DBMS预编译器和开发工具,对两种开发和调用SQL的方式进行了详细地分析和比较,实现了用嵌入式SQL这种调用方法可以提高对数据库的性能和效率.
【总页数】6页(P44-48,51)
【作者】李晓峰;李东;孙鹤
【作者单位】哈尔滨工业大学华德应用技术学院,黑龙江,哈尔滨,150025;哈尔滨工业大学,黑龙江,哈尔滨,150025;哈尔滨工业大学华德应用技术学院,黑龙江,哈尔滨,150025
【正文语种】中文
【中图分类】TP311.11
【相关文献】
1.嵌入式SQLite在温湿度巡检仪中的应用 [J], 廖一鹏
2.DB2嵌入式SQL应用程序的开发 [J], 孙敏
3.基于ARM-Linux的嵌入式SQLite研究与应用 [J], 王树森;武亚
4.运用嵌入式SQL语言实现ORACLE数据库应用的方法探索 [J], 叶符明
5.嵌入式SQLite数据库在电气工程师PDA中的应用 [J], 李敬兆;任萍
因版权原因,仅展示原文概要,查看原文内容请购买。
1、前言有一些日子没有仔细关注SQLite了,今天打开其主页,发现其最新的版本已经是3.6.22了,更让我惊喜的是它的用户越来越多,而且邮件列表的关注者也越来越多,突然觉得自己已经太old了。
惊喜的同时,不得不聊上几句了。
首先,来看看都有哪些人在使用SQLite,主页上列举一长串NB的用户,其中不乏像Adobe,Apple,F irefox,甚至连google,Microsoft,SUN这样的用户。
Firefox:这是我的机器上V3.5.7安装目录下的文件:可以发现用的SQLite 3.6.16.1。
据说,Google在它的Desktop for Mac,Google Gears,以及Android,甚至Chrome中都用到S QLite,而且,Google的工程师对SQLite的全文检索功能作了很大的贡献(contribution)。
还有Apple,Micorsoft,SUN等等,这里就不列举了。
详细见/famous.html。
有这些公司的参与,对SQLite的发展应该有很大的帮助,尤其是像Google这样的用户。
2、实现与应用下面从实现及应用的角度来谈谈SQLite,先看看SQLite的特点(功能)吧。
特点简单(simple):SQLite是一个非常轻量级自包含(lightweight and self-contained)的DBMS:一个头文件,一个动态库文件,你就拥有了关系数据库的所有功能了。
简单,是SQLite最明显的哲学。
它提供的API少而简单。
只需要一个DLL文件,你的程序马上就拥有了一个功能强大的数据库引擎,这是一件很美妙的事。
小巧(small):我用VS 2005在Windows下编译的3.6.11,Release版为368K,用时不到20秒——而编译MySQL时,要花上几分钟。
而当我插入10000条int数据时,内存开销660K,磁盘开销92 K。
事务(transaction):事务是现代商业数据处理系统最基本的要求,而Access,不论是在可执行文件大小(看了一下Access2003的可执行文件大小为6.32M,两者不是一个量级),还是事务特性,都是不能和SQLite 相比的。
运用嵌入式SQL语言实现ORACLE数据库应用的方法探索摘要:本文通过介绍pro * c/ c++预编译器以及这个编译器在vc开发环境中的配置方法,探讨了运用嵌入式sql语言在开发oracle数据库应用程序的研究。
关键词:预编译器;嵌入式sql;数据库应用中图分类号:tp311.13 文献标识码:a 文章编号:1007-9599 (2012)18-0000-021 pro * c/ c++预编译器介绍所谓pro * c/ c++预编译器实际上就是编译c或者c++语言以及oracle数据库接口的软件包。
在预编译器里可以嵌入sql语言,因此能够让程序员更加灵活访问数据库,因此在这个编译器软件包下,能够让程序员同时在vc开发环境里使用高级程序语言如c 和c++以及sql数据库操作语句。
因此能够更好的构建程序模块。
将编程工作变得更加方便,如果不使用这种pro * c/ c++预编译器软件包。
那么要想直接操作oracle等关系数据库中的数据就变得非常困难了。
2 在vc6.0开发环境下配置pro * c/ c++预编译器方法分析如果程序员在vc6.0下直接软件开发,那工作往往是事倍功半,但是如果合适的配置pro * c/ c++预编译器,那么对数据库的应用程序开发将会事半功倍,下面就来分析如何在vc环境下配置pro * c/ c++预编译器方法。
第一步单击vc开发软件tools工具栏,选择cumstomize,然后再选择tools页。
第二步在menu contents列表框里输入pro * c/c++这些字母,接着在command编辑框里输入oracle home \bin\procui. exe,同时在arguments 中键入s (targetname),在initial directory 中键入s (wkspdir)。
第三步单击tools中的options菜单,选择directories栏目页,对头文件路径以及库文件路径进行设置。
摘要:随着计算机技术的飞速发展,db2以其具有的通用性与高效运行的巨大优势渗透到各行各业中,面对越来越大的数据信息处理这一问题,如何提高效率、避免庞大的数据库系统被重复编译,增强应用时的可维护性,使得数据库对每条sql语句可以先择最优的运行。
以下从理论出发,结合例程,阐述了静态sql的应用。
关键词:嵌入式;静态sql;游标中图分类号:tp311文献标识码:a文章编号:1009-3044(2012)12-2667-04db2 embedded static sql application and practicechen jing-yan(medical college of shantou university, shantou 515041, china)1概述一个嵌入式sql应用程序文件就是一个含有sql语句,且带有特殊扩展名的文该文件。
在开始进行嵌入式sql应用程序开发前,首先需要了解如何把这样一个文件转化成宿主语言编译器可以识别和处理的格式,如何同数据库服务器进行交互、对数据进行查询修改和删除等操作,以及如何构建可执行的程序,文章源代码均用c语言。
2构建嵌入式sql应用程序过程建立一个嵌入式sql应用程序前,我们应对其用发中常用的基本概今有一定了解,其具体步骤分为:2.1开发环境使用文本编辑器或者集成开发环境(ide)编辑源文件。
2.2预编译在程序文件编辑完成后,应预编译每个连接到数据库的源程序文件。
无论是嵌入式静态sql还是嵌入式动态sql,都需要先进行预编译,并绑定到特定的数据库。
它将源文件中的sql语句注释掉,并把sql语句替换成db2运行时的api调用,这些api调用是源语言编译器能够理解的函数调用,预编工作由预编译器来完成。
预编译命令:prep filename [参数名可用数值]…如创建一个默认名为test.c的新c源文件,同时会生成一个名为test.bnd的绑定文件。
其在db2窗口下执行命令为:db2 prep test.sqc bindfile常用参数列表如表1。
实验七通过嵌入式SQL访问数据库1 实验目的熟悉通过嵌入式SQL(主语言为C语言)编程访问数据库。
2 实验平台和实验工具在SQL Server数据库管理系统上,通过C语言(VC6)编写访问数据库的应用程序来对数据库进行各种数据操作。
编程工具自选。
3 实验内容和要求熟悉RDBMS的预编译程序。
通过嵌入式SQL编程访问数据库的基本步骤对学生课程数据库中的表,完成下面功能(你也可以自己给出功能要求):1. 查询某一门课程的信息。
要查询的课程由用户在程序运行过程中指定,放在主变量中。
2. 查询选修某一门课程的选课信息,要查询的课程号由用户在程序运行过程中指定,放在主变量中,然后根据用户的要求修改其中某些记录的成绩字段。
要求:提交源程序并标识必要的注释。
保证程序能正确编译和运行,认真填写实验报告。
3.1 嵌入式SQL要求:将一段连续的SQL操作写成嵌入到C程序中的程序,调试程序,使得程序能完成一项复杂的数据处理功能,并提交程序。
嵌入式SQL由SQL语句和C/C++代码组成。
其中SQL语句由预处理器翻译成C或C++的源代码。
对预处理后的源代码进行编译、链接生成可执行程序后方可运行。
3.2 SQL Server预处理器SQLServer的预处理程序是nsqlprepc.exe。
其常用的语法格式如下:nsqlprep 文件名■nsqlprep详细的语法格式以及参数意义,请参阅联机帮助。
■要求程序文档名的后缀为.sqc。
■预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档同一个路径下。
nsqlprep.exe存在SQLServer的安装盘的x86\Binn下。
注意:在安装SQL Server时并不会同时安装预编译应用程序nsqlprep.exe,需要将此文件另拷贝至目录下。
3.3 预编译用SQLServer的预处理程序是nsqlprepc.exe对含有嵌入式SQL的程序文件进行预编译。
如果编写的主程序文件名称为authid.sqc,存放在E:\esql目录下,预编译的具体方法如下:◆在windows环境下在MS-DOS环境下进行预编译,假设我们将nsqlprep.exe文件拷贝纸e:\esql目录下:1)将E:\Esql设为当前目录;2)预编译。
嵌入式SQL嵌入式SQL的定义:嵌入式SQL(英文: Embedded SQL)是一种将SQL语句直接写入C语言,COBOL,FORTRAN, Ada等编程语言的源代码中的方法。
借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。
在这一方法中,将SQL文嵌入的目标源码的语言称为宿主语言。
嵌入式SQL内容:除了可以执行标准SQL文之外,为了对应嵌入的需要,还增加了一些额外的语法成分。
主要包含以下内容:(1)宿主变量使用声明的语法(2)数据库访问的语法(3)事务控制的语法(4)游标操作的语法对宿主型数据库语言SQL,DBMS可以采用两种方法处理,一种是预编译,另一种是修改和扩充主语言使之能处理SQL语句。
目前采用较多的是预编译的方法。
即有DBMS的预处理程序对源程序进行扫描,识别出SQL语句,把它们转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。
嵌入式SQL的使用范围和环境支持嵌入式SQL的数据库产品以下列出支持嵌入式SQL的数据库产品以及各自支持的宿主语言Oracle DatabaseAda Pro*Ada在Oracle 7.3的版本中被加入产品族,并且在Oracle 8中被替换为SQL*Module。
但在此之后就一直没有更新。
SQL*Module支持Ada 83.C/C++ Pro*C 在Oracle 8 时被替换成了Pro*C/C++。
之后Pro*C/C++ 到Oracle Database 11g仍都在被支持。
COBOLPro*COBOL到Oracle Database 11g仍都在被支持。
FortranPro*FORTRAN 在Oracle 8之后的Oracle版本中就不再被更新,但Bug修正仍在维护中。
Pascal Pro*Pascal在Oracle 8之后的Oracle 版本中就不再被更新。
PI/L Pro*PL/I 自Oracle 8之后就不再被更新,但文档中仍然有记述。
SQL语句可以单独在数据库系统本身中执行,但如果运用在其他编程工具所编制的程序中,一般不能单独执行,而要把SQL语句嵌入到高级语言(如易语言)中使用,通过高级语言的命令和方法来调用之,此时SQL称为嵌入式SQL。
调用SQL语句的程序称为宿主程序,在易语言中一般是把SQL语句作为宿主程序的唯一参数来直接处理。
嵌入式SQL在使用上有一些规定,在易语言中目前的版本规定如下:
⑴、在程序中要区分SQL语句和宿主语言的语句。
在易语言中好区分,因为SQL语句形式是英文的,而易语言是中文的,但在实际应用时仍然有可能会混乱,所以易语言要把SQL语句转化为文本型才能调用,即嵌入式SQL语句两边要用双引号来标示。
⑵、允许SQL语句使用宿主程序的变量,但使用时要将宿主程序的变量跟外部数据库中表格的字段名区别开来,区别方法如下:
①、在易语言中要将变量类型转化为文本型变量才能被SQL文本相加使用,比如下面的例子中有一个叫“数字1”的整数类型变量,插入到SQL文本中是这样表达:
外部数据库1.查询(“select * from chj where ” +组合框1.内容+“=” +到文本(数字1))
②、包含字段名的SQL文本两边加双引号,变量名不能在双引号内,如上例。
⑶、要将字段名跟字段值区别开来,区别方法如下:
①、对于文本类型的字段,在其字段值两边要加上“''”号标示其文本值,代表语法是:字段名称=…文本值‟。
如下:
外部数据库1.查询(“select * from chj where 姓名=''山大王''”)
又如下面“查找编辑框.内容”中的字段值是文本型,嵌入式SQL语句如下:
外部数据库1.查询(“select * from chj where 姓名==” +“''” +查找编辑框.内容+“''”)
②、对于数字类型的字段,在SQL语句中表示其字段值,两边不加符号标示,代表语法是:字段名称=数字值。
如下两例:
外部数据库1.查询(“select * from chj where ” +组合框1.内容+“=” +查找编辑框.内容)
外部数据库1.查询(“select * from chj where 学号=17”)
③、对于日期时间类型的字段,在其字段值两边要加上“#”号标示其时间值,代表语法是:字段名称=#时间值#。
如下两例:
外部数据库1.查询(“select * from chj where 入学时间BETWEEN #2001-01-01# and #2002-01-01#”)
外部数据库1.查询(“select * from chj where ” +组合框1.内容+“=” +“#” +查找编辑框.内容+“#”)
④、也可以将SQL语句中的字段名(尤其是中文名)可用中括号括住,如:[字段名]。
⑷、SQL语句要用半角输入法输入,否则可能会出错。
那么在易语言中怎样调用SQL语句呢?一般是在外部数据库对象(控件)的方法中调用,试概括如下:
⑴、对外部数据库进行查询的方法。
对外部数据库的查询就是在对外部数据库不加编辑改动的前提下,只通过记录集来对数据库进行显示、查询、筛选、排序和记录集的合并等操作。
所有查询类的方法起源于下面这个语句,其他查询类语句是对这个语句的调用(将此语句作为唯一的参数),该语句如下:
外部数据库.查询(查询类SQL语句)
也可这样表达:
外部数据库.查询(“SELECT...FROM...[WHERE]...[GROUP BY]...[ORDER BY]... ”)
该方法是对当前被打开数据库进行数据查询,返回的结果称为“记录集句柄”(即记录集的标记)。
注意当不再使用此记录集时,必须使用“关闭记录集”将其关闭,如果失败,返回0。
在易语言中,将以上语句等同于记录集句柄以作为其他查询类语句的参数。
为了使该参数在所有子程序中都能应用,我们一般把它设置为整数型全局变量,并将其值设置如下:
记录集句柄=外部数据库.查询(查询类SQL语句)
由于易语言要把SQL语句转化为文本型才能调用,所以嵌入式SQL语句两边要有双引号,例句:
记录集句柄=外部数据库1.查询(“select * from chj ”)
※“chj”是外部数据库中一个表的名称
又如,欲得到排序的记录集,应象下面这样赋值:
记录集句柄=外部数据库1.查询(“SELECT * FROM chj ORD ER BY 语文DESC”)
现将外部数据库控件中其他的查询类方法列举如下:
①、外部数据库.重新查询(记录集句柄)即:
外部数据库.重新查询(外部数据库.查询(查询类SQL语句))
例句:外部数据库1.重新查询(外部数据库1.查询(“select * from chj ”))
②、外部数据库.首记录前(记录集句柄)即:
外部数据库.首记录前(外部数据库.查询(查询类SQL语句))
例句:外部数据库1.首记录前(记录集句柄)
③、外部数据库.尾记录后(记录集句柄)
④、外部数据库.到首记录(记录集句柄)
⑤、外部数据库.到尾记录(记录集句柄)
⑥、外部数据库.到前一记录(记录集句柄)
⑦、外部数据库.到后一记录(记录集句柄)
⑧、外部数据库.读(记录集句柄,字段名称或位置)
例句:语文编辑框.内容=到文本(外部数据库1.读(记录集句柄, “语文”))
⑵、对外部数据库进行编辑的方法。
所谓对外部数据库的编辑,就是变更改动外部数据库本身,包括添加、更新、删除等,对数据库进行编辑不必通过记录集。
所有非查询类SQL语句都嵌入下面这个语句来执行:
外部数据库.执行(非查询类SQL语句)
①、添加记录,其语法如下:
外部数据库.执行(“insert into 表名称(字段1,字段2...) values (字段值1,字段值2...) ”)
例句:
外部数据库 1.执行(“INSERT INTO chj ” +“(学号,姓名,语文,数学,英语)” +“ valueS ” +“(” +学号编辑框.内容+“,''” +姓名编辑框.内容+“'',''” +语文编辑框.内容+“'',''” +数学编辑框.内容+“'',''” +英语编辑框.内容+“'')”)
②、更新记录,其语法如下:
外部数据库.执行(“UPDATE 表名称SET 字段1=字段值1,字段2=字段值2...WHERE 条件式”)
例句:
外部数据库1.执行(“UPDA TE chj SET 学号=” +“''” +学号编辑框.内容+“'',” +“姓名=” +“''” +姓名编辑框.内容+“'',” +“语文=” +“''” +语文编辑框.内容+“'',” +“数学=” +“''” +数学编辑框.内容+“'',” +“英语=” +“''” +英语编辑框.内容+“'' ” +“WHERE 姓名=” +“''” +姓名1 +“'' ” +“AND 语文=” +语文1 +“AND 数学=” +数学1 +“AND 英语=” +英语1 +“AND 学号=” +学号1)
③、删除记录,其语法如下:
外部数据库.执行(“DELET E * FROM 表名称WHERE 条件式”)
例句:
外部数据库.执行(“外部数据库1.执行(“DELETE * FROM chj ” +“WHERE 姓名=” +“''” +姓名1 +“'' ” +“AND 语文=” +语文1 +“AND 数学=” +数学1 +“AND 英语=” +英语1 +“AND 学号=” +学号1)”)。