首页 > 资料收集 > 易语言操作SQL【资料整理】

易语言操作SQL【资料整理】

2009年6月26日 eking 发表评论 阅读评论

 那么在易语言中怎样调用SQL语句呢?一般是在外部数据库对象(控件)的方法中调用,试概括如下:
  ⑴、对外部数据库进行查询的方法。
  对外部数据库的查询就是在对外部数据库不加编辑改动的前提下,只通过记录集来对数据库进行显示、查询、筛选、排序和记录集的合并等操作。
  所有查询类的方法起源于下面这个语句,其他查询类语句是对这个语句的调用(将此语句作为唯一的参数),该语句如下:   外部数据库.查询 (查询类SQL语句)
  也可这样表达:
  外部数据库.查询 (“SELECT…FROM………… ”)
  该方法是对当前被打开数据库进行数据查询,返回的结果称为“记录集句柄”(即记录集的标记)。注意当不再使用此记录集时,必须使用“关闭记录集”将其关闭,如果失败,返回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)”)
*************************************************************************

嵌入式SQL的应用

  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语句中的字段名(尤
其是中文名)可用中括号括住,如:[字段名]。

*************************************************************************
于ODBC数据源连接文本

  在《外部数据库的连接原理》一讲中我们说过,ODBC提供对多种数据库的支持,如dBase、Access、MS SQL Server及Oracle,也就是说运用ODBC数据源中所提供的连接代码,我们可以实现对多种数据库的连接。以连接Access数据库为例,ODBC数据源连接文本的格式是:
  “Driver={数据库驱动程序};Dbq=数据库文件;”
  在以上连接文本中,如果数据库跟程序在同一目录下,或者用变量DefaultDir指定了数据库所在目录,则数据库文件可以不用全路径名,如下即可:
  “ODBC;DBQ=MSAccess.mdb;Driver={Microsoft Access Driver (*.mdb)};”
  如下也可:
  “ODBC;DBQ=MSAccess.mdb;DefaultDir=d:\Downloads\e21;Driver={Microsoft Access Driver (*.mdb)};”
  如果数据库跟程序不在同一目录下,或者没有用变量DefaultDir指定数据库所在目录,则数据库文件需要用全路径名,如下:
  “ODBC;DBQ=E:\Quake III Arena\MSAccess.mdb;Driver={Microsoft Access Driver (*.mdb)};”
  以上所说的是连接Access数据库的格式,那么连接其他数据库的ODBC数据源连接文本又是怎样的?连接不同类型的数据库要使用不同的对应驱动程序,没忘记吧!不同的驱动程序当然它们的参数组合也就不同了,每一种不同驱动程序都有其特定的的参数形式:
  ⑴、MS Access ODBC DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft Access Driver (*.mdb)}
  ☆、参数:Dbq 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\somepath\dbname.mdb;Uid=Admin;Pwd=pass; ”
  ⑵、dBase ODBC DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft dBASE Driver (*.dbf)}
  ☆、参数:Dbq 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\somepath\dbname.dbf; ”
  ⑶、Oracle ODBC DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft ODBC for Oracle}
  ☆、参数:Dbq 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=admin;Pwd=pass; ”
  ⑷、MS SQL Server DSNless 连接:
  ☆、参数:Driver 设置值:{SQL Server};
  ☆、参数:Server 设置值:服务器名称
  ☆、参数:Database 设置值:数据表名称
  ☆、参数:Uid 设置值:用户名称
  ☆、参数:Pwd 设置值:密码
  ☆、例句:
  “Driver={SQL Server};Server=servername;Database=dbname;Uid=sa;Pwd=pass; ”
  ⑸、MS Text Driver DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft Text Driver (*.txt; *.csv)}
  ☆、参数:Dbq 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\somepath\;Extensions=asc,csv,tab,txt;Persist Security Info=False; ”
  ⑹、Visual Foxpro DSNless 连接:
  ☆、参数:Driver 设置值:{Microsoft Visual FoxPro Driver}
  ☆、参数:SourceType 设置值:DBC
  ☆、参数:SourceDB 设置值:实际路径文件名称
  ☆、例句:
  “Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\somepath\dbname.dbc;Exclusive=No;”
  ⑺、MySQL DSNless 连接:
  ☆、参数:Driver 设置值:{mysql}
  ☆、参数:database 设置值:数据表名称
  ☆、参数:uid 设置值:用户名称
  ☆、参数:pwd 设置值:密码
  ☆、例句:
  “driver={mysql}; database=yourdatabase;uid=username;pwd=password;option=16386”

*******************************************************************

Popularity: 4% [?]

你可能对下面的内容也感兴趣

    分类: 资料收集 标签: 阅读:480
    1. 本文目前尚无任何评论.
    1. 本文目前尚无任何 trackbacks 和 pingbacks.

    3718150474633154929112424204136344840324513627301092612313516391742725322194423144338215828