AutoIt 入门与提高(1)

 
2011-03-30 19:04

1 、 ADO 简介及 SQL 语言

现在市面上流行的数据库种类繁多,大型的有 Oracle 、 Db2 、 Sysbase 和 Sql Server 等,小型的有 Access 、 MySql 、 FoxPro 等等。

尽管每种数据库现在都提供了 API 接口给编程者调用,但不同的数据库之间,接口也是不同的。所以一旦需要更换数据库,那之前的代码则将全部报废。

为了能够用同种方法访问不同的数据库,一些软件厂商提出了通用数据库接口标准,如微软的 ODBC 、 DAO 、 RDO 、 OLEDB 和 ADO 接口。这些接口对各类数据库的驱动程序进行了封装,我们写应用程序时只需要通过标准的语法访问接口程序,至于不同数据库之间的区别,将有接口程序面对。

既然有这么多种的接口可供调用,那我们要选择哪种才适合 AU3 呢?

ODBC 是以 API 的形式提供了一组接口,因为使用的 API 比较底层,虽然 AU3 也可以调用 API ,但如果真的使用起来将会是非常麻烦的事情。

对于 AU3 这类高级语言来说,使用面向对象的 ADO 、 RDO 等接口显然是比较理想的。

了解将使用何种接口让 AU3 访问数据库后,我们再来了解一下什么是 SQL 语言。

SQL (结构化查询语言)是数据库系统的通用语言,利用它我们可以使用几乎相同的语句在不同的数据库中执行相同的动作。

例如不论是在 access 、 mysql 或 oracle 等数据库中,想要查询某张表的数据,使用的都是 ”Select * From 表名 ” 这样的语句。

 

2、数据库连接与断开

我们以ADO为例,来讲述如何连接数据库。既然ADO是面向对象的接口,那我们第一步要做的事情就是建立对象。

$Conn =ObjCreate("ADODB.Connection")

       ADO的连接对象建立成功之后,我们使用open属性来打开数据库。

       $Conn.open("DRIVER={SQL Server};SERVER=(local);UID=sa;PWD=123456;")

       这样我们就可以使用sa账号,以123456作为密码打开(local)地址的数据库了。这里我是以打开Sql Server数据库为例,如果需要操作其他数据库,只需要更改连接字串即可,例如连接Access数据库可以这样:

       $Conn.open("Driver={Microsoft Access Driver (*.mdb)};dbq=test.mdb;")       

       成功打开数据库连接之后,要断开也很简单,可以使用close方法来操作。

       $Conn.close 

3 、数据库管理

在连接上数据库之后,我们就可以对库中的数据进行管理了。不论是读取、更新、添加、删除都将不是问题,利用 sql 语句我们可以很轻松的实现这一目的。

3.1、执行sql语句

ADO提供了两种方法供我们执行sql语句,分别是open和Execute。一般情况下,执行添加、删除、更新等语句时,常用Execute;读取的时候,则用open。

注意:此处的open方法并不是连接对象的,而是记录集的,具体在下节回讲。

我们来看一条添加新数据的示例:(在test表中添加新数据)

$Conn.Execute("insert into test (Name,Tel) values ('张三','13911931773')")

       接着我们再看如何更新数据:

       $Conn.Execute("UPDATE test set Tel = '119' WHERE Name = ' 张三'")

       然后是删除数据:

       $Conn.Execute("DELETE FROM test WHERE Name = ' 张三'")

       那如果要读取数据怎么办呢?我们先要创建一个记录集对象,然后再使用open方法操作:

       $RS = ObjCreate("ADODB.Recordset")

       $RS.ActiveConnection= $Conn

       $RS.Open("Select * from test")

       然后我们就可以取结果集中的数据了,具体方法在下节讲。

       使用open方法除了查询之外,同样可以执行增、改、删操作。使用记录集对象的AddNew、Delete、Update等方法,在此我就不对这种方法举例了,如果有感兴趣的朋友,可以翻阅msdn,参考vb的相关代码即可。

3.2、获取结果集中的数据

再创建了记录集对象,并成功的Select之后,我们要如何才能获得查到的数据呢?看代码:

       $RS = ObjCreate("ADODB.Recordset")

       $RS.ActiveConnection= $Conn

       $RS.Open("Select * from test")

If$RS.RecordCount > 0Then

       For$i =1To $RS.RecordCount

              $RS.Fields(0).Value ;第一条数据中第一个字段的值。

              $RS.MoveNext ;游标移到下一条数据

       Next

EndIf

       我们来看一段实例:

#include<Array.au3>

 

Dim$sServer = '127.0.0.1', $sUsername = 'sa', $sPassword ='1234567';三个变量分别是连接数据库用的地址、账号、密码

 

$Conn = ObjCreate("ADODB.Connection")

$Conn.open("DRIVER={SQL Server};SERVER="& $sServer & ";UID="& $sUsername & ";PWD="& $sPassword & ";")

 

;连接成功后我们来读取数据

$Conn.Execute("use master");首先要指定一个需要操作的库,这里用系统自带的master库来操作

 

$RS = ObjCreate("ADODB.Recordset");创建记录集对象

$RS.ActiveConnection= $Conn;设置记录集的激活链接属性来自$Conn 

$RS.Open("Select * from sysdatabases ORDER BY Name");执行Sql语句,这个语句是查询数据库中所有的库属性,并且按Name字段的数据进行排序

 

Dim$Select_Db[1][1] = [[0]];定义一个数组来存放查询到的数据

Dim$Count = 1;定义一个变量用来记录查询到的数据行数

 

While Not $RS.eof And Not$RS.bof;当记录指针处于第一条记录和最后一条记录之间时,执行while循环

    If@error= 1 Then ExitLoop

    If$Select_Db[0][0] = 0 Then;当数组二维$Select_Db[0][0]为0时,重定义数组的第二维大小等于记录集查询到的字段数

        ReDim$Select_Db[1][$RS.Fields.Count+ 1];$RS.Fields.Count为记录集查询到的字段数

        For$i = 0 To$RS.Fields.Count- 1

            $Select_Db[0][$i + 1] = $RS.Fields($i).Name;$RS.Fields($i).Name为字段名,把字段名存入数组

        Next

    EndIf

    ReDim$Select_Db[$Count + 1][$RS.Fields.Count+ 1];数组第一维大小加1,用于存放数据

    $Select_Db[0][0] = $Count;$Select_Db[0][0]存放查询到的数据行数

    For$i = 0 To$RS.Fields.Count- 1

        $Select_Db[$Count][$i + 1] = $RS.Fields($i).Value;$RS.Fields($i).Value字段数据

    Next

    $Count += 1;行数加1 

    $RS.movenext;将游标移到下一条数据上

WEnd

$RS.Close;关闭记录集对象

_ArrayDisplay($Select_Db, "数据库所有库属性" );显示数组

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值