kk_lee69 发表于 2012-2-1 00:36:58

【原创】AU3 操作SQL 数据库…详细语法、参数…教学 课程(一) MSSQL入门

本帖最后由 kk_lee69 于 2016-4-24 22:58 编辑

【原创】AU3 操作SQL 数据库…详细语法、参数…教学 课程(一)MSSQL入门

一、        前言:
    由于工作上的关系,AU3部份应用最多的在于数据库,最近看到网上很多人询问数据库的相关操作,因此把自己小小的心得 做个纪录,顺便给刚接触的朋友一些参考的数据……
.
    另外由于数据库种类很多,所以如果时间允许,会慢慢增加数据初步先介绍关于MS SQL 的操作部分…….先声明 这边只能介绍数据库的基本操作…至于应用不在此介绍范围…..由于我使用的是繁体中文….用词上可能会跟各位的用语不太一样…..这点还请见谅…..PO 文数据会经过转换成简体字

以下纯属个人心得…..如果有错误的地方 还望指教……….

二、        数据库连接语法 参数

    想要操作数据库当然得先要跟数据库主机联机噜……所以先介绍数据库的联机语法跟参数

数据库联机最精简的 语法 如下:这段程序代表连接到数据库主机…每一行程序都必须要存在 除了宣告变量以外……

如果下面的程序…. 还无法让您联机数据库…..那肯定是您的 数据有错误…..


Dim $Server = "server01" ;SQL主机名称
Dim $ID = "sa" ; 登入数据库主机的账号一般都会用sa
Dim $pw = "123" ;登入数据库主机的密码
DIM $Company="database01" ;数据库名称

$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")

$conn.Open ("driver={SQL Server};server="&$Server&";uid="&$ID&";pwd="&$pw&";database="&$Company);主机名IP127.0.0.1,UID=用户,PWD=密码,database=数据库名
$RS.ActiveConnection = $conn ; 设定RS 是 conn 的集合 重要的部份


另外有网友询问过 跟数据库联机时….有时候需要设定程序名称…..可以用于数据库追踪用……例如:设定联机的程序名称为 ABC

其语法如下:

$conn.Open ("driver={SQL Server};server=127.0.0.1;uid=sa;pwd=123;database=MASTER;App=ABC123;")


还有朋友问到…..如果我的数据库主机所用的通讯PORT 非SQL 内定的PORT 该如何处理:例如 通讯PORT 采用 1400

其语法如下:

$conn.Open ("driver={SQL Server};server=192.168.0.200,1400;uid=sa;pwd=123;database=MASTER;App=ABC123;")



三、        读取数据库上面的数据表

既然联机到数据库、肯定会需要读取数据表了.........
例如 打算读取 Product 这个数据表…..一般来说 SQL 语法为

SELECT * FROM Product


例如 打算读取 Product 这个数据表….里面 产品编号为 A 开头的…..

SELECT * FROM Product Where ID like ‘A%’


说到这边 看倌 应该注意到了…..想要读取 数据库上面的数据表 就是请先把 SQL 的查询语法 准备好…….你的功力够强的话….通常 一段查询 就可以得到你要的结果……我通常会把四五个以上的子查询 包做一个 写在一段里面….

写好您的SQL查询语法之后……接下来准备将它套入 AU3 里面了

AU3 的数据库 读取语法 如下:


;标准的 读取数据 循环模式语法
;几乎 所有的查询都只要套用这个模式就可以了......

$RS.open ("请注意 这里存放的是 刚刚打好的 SQL 语法 ...请注意 前后都有加上 双引号");
While (Not $RS.eof And Not $RS.bof);循环读表 有资料就跑回圈没资料就会跳出
       
        MsgBox(0, "字段一", $RS.Fields (0).value,5);显示第一个字段 资料 ,AU3返回的数据通常 都是不含 原本的 字段名称要取的字段名称需要其它方法
        MsgBox(0, "字段二", $RS.Fields (1).value);显示第二个字段 资料
               
        If StringIsDigit($RS.Fields(1).value)=0 Then   ;这边可以加上判断

        EndIf
               
        $RS.movenext;下一笔资料
WEnd;结束循环读表
$RS.close;关闭数据分表 当使用 RS 查询之后 整个纪录读取完毕后必须要关闭 RS


例如 查询产品数据 的 SQL 语法为 SELECT * FROM Product
带入之后变成

;标准的 读取数据 循环模式语法
;几乎 所有的查询都只要套用这个模式就可以了......

$RS.open (" SELECT * FROM Product ");
While (Not $RS.eof And Not $RS.bof);循环读表 有资料就跑回圈没资料就会跳出
       
        MsgBox(0, "字段一", $RS.Fields (0).value,5);显示第一个字段 资料 ,AU3返回的数据通常 都是不含 原本的 字段名称要取的字段名称需要其它方法
        MsgBox(0, "字段二", $RS.Fields (1).value);显示第二个字段 资料
               
        If StringIsDigit($RS.Fields(1).value)=0 Then   ;这边可以加上判断

        EndIf
               
        $RS.movenext;下一笔资料
WEnd;结束循环读表
$RS.close;关闭数据分表 当使用 RS 查询之后 整个纪录读取完毕后必须要关闭 RS


在来就是中间循环的应用了…….这里的应用就广了….有人想把数据导入到 ListView 就可以把 到入到listview 的语法写在中间 循环循环这段….
当然也可以加上IF …THEN …去做判断…..如果有需要 也可以在这段循环里面把从数据库读取到的数据 放入 数据组 里面

四 更新数据库……..

   如果有需要更新数据库…….老规矩….请先写出 SQL 语法……

例如: UPDATEProductSETPrice=20WhereID=’A001’

然后再把 上面的SQL 语法 套入 AU3 里面……..

请注意 这边 就不是使用 RS 的语法了…..通常 RS的语法 使用于 有返回数据的时候……..

如果 你的SQL 语法 执行后 不会有数据返回…….通常使用下面的语法即可….

$conn.Execute("UPDATEProductSETPrice=20WhereID=’A001’")


另外 有看到网友询问…..如果我的 查询 有好几段 很复杂 …或者 有些东西我希望变成是 变量譬如说 日期…..希望由系统带出来…..这样该怎么做呢….

请 记住以下的原则……….
1. 先把 SQL 语法 完整的写出来
2. 再把 SQL 语法套入到 AU3的标准模式里面
3. 再把 要变成变量的 改掉 成为变量…….

举个例子………希望更新产品日期为 今天的 产品价格
SQL语法为 UPDATEProductSETPrice=20WhereDATE=’20120101’

套入语法后变成……

$conn.Execute("UPDATEProductSETPrice=20WhereDATE=’20120101’ ")


然后再把 日期的那个数值 变成 AU3的函数……

$conn.Execute("UPDATEProductSETPrice=20WhereDATE=’ "&@YEAR&@MON&@MDAY&" ’ ")


这样一来,就不会有语法的问题了……..

最后…..数据库整个处理完毕后…..完整的程序 必须要把数据库的联机 给关闭掉

$conn.close; 关闭数据库连接

afan 发表于 2012-2-1 00:49:18

居然是简体,辛苦了~

80ren 发表于 2012-2-1 01:45:23

很详细,辛苦了

netegg 发表于 2012-2-1 02:24:23

Structured Query Language ---- 结构化查询语言,与其说是一个数据库,不如说成是一个操作关系型数据库的语言,既然是关系型数据库,如果能够很好的理解表间,表内,查询间,查询内的关系,其实并不难,但是难就难在关系上,一对多,多对一,一对一的表达上,至于语言,说起来就那么几句,sqlite的语句对应上不同种类的数据库引擎,大致差不多了

楼主,最好多介绍下关于联合查询方面的东西

skyfree 发表于 2012-2-1 07:45:13

很不错的教程,楼主辛苦

Chinacat 发表于 2012-2-1 07:57:07

很实用,也很难得,谢谢了。。。

ganyuansi 发表于 2012-2-1 08:29:38

{:face (303):},原来还可以操作数据库。牛百啊

kk_lee69 发表于 2012-2-1 09:07:34

回复 4# netegg

好呀 下再來寫查詢的東西很好玩的呵呵

KLU3K 发表于 2012-2-1 10:52:37

收藏了啊!

楼上风云 发表于 2012-2-1 12:51:43

回复 1# kk_lee69
这是在授人以渔

test10942 发表于 2012-2-2 15:57:07

真是学习的好教材!

离我远点 发表于 2012-2-2 17:14:39

这个教程很实用!

zps26 发表于 2012-2-3 01:09:12

sql虽然语句少,用好也不容易,辛苦了

st0rm 发表于 2012-2-3 11:33:35

刚知道au可以直接操作数据库,学习了,很有用,谢谢!

zhongzijie 发表于 2012-2-5 22:54:00

谢谢楼主分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【原创】AU3 操作SQL 数据库…详细语法、参数…教学 课程(一) MSSQL入门