开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 14666|回复: 123
收起左侧

[MSSQL] 〖转载〗嵌入式SQL的应用

[复制链接]
结帖率:76% (13/17)
发表于 2010-8-27 14:06:06 | 显示全部楼层 |阅读模式   河南省漯河市
本帖最后由 qsdya01 于 2010-8-27 14:07 编辑

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 ORDER 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.执行 (“UPDATE chj SET 学号=” + “''” + 学号编辑框.内容 + “'',” + “姓名=” + “''” + 姓名编辑框.内容 + “'',” + “语文=” + “''” + 语文编辑框.内容 + “'',” + “数学=” + “''” + 数学编辑框.内容 + “'',” + “英语=” + “''” + 英语编辑框.内容 + “'' ” + “WHERE 姓名=” + “''” + 姓名1 + “'' ” + “AND 语文=” + 语文1 + “AND 数学=” + 数学1 + “AND 英语=” + 英语1 + “AND 学号=” + 学号1)

  ③、删除记录,其语法如下:

  外部数据库.执行 (“DELETE * FROM 表名称 WHERE 条件式”)

  例句:
  外部数据库.执行 (“外部数据库1.执行 (“DELETE * FROM chj ” + “WHERE 姓名=” + “''” + 姓名1 + “'' ” + “AND 语文=” + 语文1 + “AND 数学=” + 数学1 + “AND 英语=” + 英语1 + “AND 学号=” + 学号1)”)

评分

参与人数 1好评 +1 收起 理由
冰点 + 1 感谢您的支持,精易有你更精彩!

查看全部评分

发表于 2010-9-13 10:41:58 | 显示全部楼层   云南省昆明市
不知道什么是嵌入式SQL 看看
回复 支持 反对

使用道具 举报

发表于 2010-9-21 07:06:05 | 显示全部楼层   重庆市重庆市
不知道什么是嵌入式SQL 看看
回复 支持 反对

使用道具 举报

发表于 2010-9-22 15:51:42 | 显示全部楼层   重庆市重庆市
不知道什么是嵌入式SQL 看看
回复 支持 反对

使用道具 举报

发表于 2010-9-24 00:33:40 | 显示全部楼层   湖南省衡阳市
什么是嵌入式SQL
回复 支持 反对

使用道具 举报

结帖率:0% (0/3)
发表于 2010-10-13 02:29:26 | 显示全部楼层   广东省佛山市
什么东东,下来看个究竟
回复 支持 反对

使用道具 举报

结帖率:50% (3/6)
发表于 2010-10-15 11:58:45 | 显示全部楼层   广西壮族自治区北海市
看看,学习一下!
回复 支持 反对

使用道具 举报

发表于 2010-10-16 17:14:05 | 显示全部楼层   山东省青岛市
我现在正需要一个 MYSQL数据库 和易语言护教
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2010-11-12 18:03:44 | 显示全部楼层   安徽省六安市
不知道什么是嵌入式SQL 看看 ....
回复 支持 反对

使用道具 举报

发表于 2010-11-13 14:53:04 | 显示全部楼层   浙江省杭州市
不知道什么是嵌入式SQL 看看 ....
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表