8.ADODB
PHP ADODB
17.4 ADODBPHP在数据库的支持上是很令人称道的,几乎所有的知名数据库系统都有对应的函数库支持,而且支持得很完整。
但遗憾的是,每一群数据库支持函数无论在名称或参数结构上,都有很大的差异,这使得PHP的系统开发者在面临更换数据库时,总会觉得痛苦万分。
难道这个问题就没有解决方法吗?当然有,答案就是将要介绍的ADODB这个PHP类库。
ADODB提供了完整的方法和属性,可以用来控制数据库系统,更棒的是你只要记得它的功能即可,因为不同的数据库系统,只要修改一个属性值,ADODB就会自动依据设定取用正确的PHP函数。
此外,再配合数据库系统修改SQL命令,这样PHP系统就可以在最短的时间内更换到另一个数据库系统;如果在编写程序时,对SQL命令能做妥善规划,那就更快了。
经过以上的介绍,相信你已经对ADODB的功用有所了解了,以下为ADODB的详细介绍。
下载ADODB:可以在/ 取得最新版的ADODB (见图17-2)。
图17-2ADODB的最新版本是adodb495a版,根据需要,可以下载完整版本的ADODB。
如果您主要使用MySQL,则可以下载ADODB的lite版本,减少体积和一些不必要的系统开销。
17.4.1 使用ADODB由于PHP的数据库存取函数没有标准化,所以需要一组函数库或类别来隐藏不同数据库函数界面间的差异。
可以实现相对简单的数据库系统移植,这就是A DODB抽象层要实现的目标。
ADODB目前支持的数据库系统MySQL、Oracle、MS SQL Server、Sybase/Syb ase SQL Anywhere、Informix、PostgreSQL、FrontBase、Interbase(Firebir d及Borland版本)、Foxpro、Access、ADO和ODBC连接。
与其他数据库抽象层相比,其他类大多集中在处理与SELECT操作有关的内容,而ADODB对于INSERT及UPDATE操作也提供额外的支持,并且可以很快连接到多类数据库,提供的统计方法,在底层实现字串连接及字串标记变量的差异处理(在某些数据库中,字串的连接和标记符号是有差异的)。
adodb常用函数
Connect($host,[$user],[$password],[$database])对服务器或资料来源$host 非持续性连结,使用者认证代码为$user ,密码为$password ,如果服务器支持多数据库,则指定连结到数据库$database。
连结成功回传true ,失败则回传false 。
注意:如果你使用的是Microsoft ADO,而非OLEDB,你可以设定$database 参数为你正在使用的OLEDB 资料供应器。
Execute($sql,$inputarr=false)执行SQL 指令$sql ,如果成功,就回传一个对应的ADORecordSet 对象。
要注意的是这个指令如果执行成功时,一定会回传一个数据集,即使是执行insert 或update 指令也一样。
回传对应的ADORecordSet 对象。
例如,如果连结的是mysql ,那么ADORecordSet_mysql 将会被回传。
当SQL指令执行失败时会回传false 值。
ErrorMsg()回传最后状态或是错误讯息。
即使没有错误发生,本函数也会回传一个字符串。
一般情况下,你不需要呼叫这个函数,除非ADODB函数因为错误状态回传了false值。
注意:如果debug 旗标被激活了,SQL 错误讯息将会在Execute函数被呼叫时发生错误后出现。
Close( )关闭数据库的连结。
PHP4 以数据库连结结束时不需要特别去清除而享有盛名,因为其参考计数机制会自动帮我们清除掉。
GetOne($sql)Executes the SQL and returns the first field of the first row as an array. Therecordset and remaining rows are discarded for you automatically. If an error occur,false is returned.执行SQL指令,并且以数组的方式回传第一笔记录的第一个字段。
ADODB
更容易去移植,因为所有与资料库相依的程式码被都隐藏在後端,所以使用者不再需要去移植类别里的逻辑。
支援PHP4连结变数,请叁考ADOdb-session.php。
安装
首先要确定你所使用的PHP版本是4.01pl2或是之後的版本(因为ADODB使用到了require_once及include_once两个函数)。解压缩全部的档案到你的Web伺服器可以存取的一个目录里。
作业系统
access
B
Microsoft Access/Jet.需要建立一个ODBC/DSN。
Y/N
ODBC
Windows only
ado
B
一般未经特别指定的资料库系统,透过ADO,允许不设定DSN连结,使用OLEDB以提供较佳的效能。
?视资料库而定
ADO or OLEDB provider
Windows only
Y/N
Mssql client
Unix and Windows.
Unix install howto.
mysql
A
MySQL不支援交易处理
Y/N
MySQL client
Unix and Windows
mysqlt或maxsql
A
MySQL支援交易处理
Y/N
MySQL client
Unix and Windows
ado_access
B
Microsoft Access/Jet透过ADO,允许不设定DSN连结,使用OLEDB以提供较佳的效能。
Y/N
ADO or OLEDB provider
adodb编程示例
adodb编程示例ADODB(ActiveX Data Objects Database)是一种用于访问数据库的编程接口,它使用VBScript或JavaScript等脚本语言来编写代码。
以下是一个使用ADODB的示例,演示如何连接到数据库并执行查询:vbscript复制代码' 创建 ADODB 对象Set conn = CreateObject("ADODB.Connection")' 连接到数据库conn.Open "Provider=SQLOLEDB;DataSource=localhost;Initial Catalog=mydatabase;UserID=myusername;Password=mypassword;"' 执行查询Set rs = CreateObject("ADODB.Recordset")rs.Open "SELECT * FROM mytable", conn' 循环遍历结果集While Not rs.EOFWScript.Echo rs.Fields("column1") & ", " &rs.Fields("column2")rs.MoveNextWend' 关闭结果集和连接rs.Closeconn.Close在上面的示例中,我们首先创建了一个ADODB对象,然后使用conn.Open方法连接到数据库。
接下来,我们创建了一个ADODB.Recordset对象,并使用rs.Open方法执行查询。
最后,我们使用循环遍历结果集,并输出每一行的数据。
最后,我们关闭了结果集和连接。
请注意,上述示例中的连接字符串和查询语句只是示例,您需要根据自己的实际情况进行修改。
另外,您还需要在服务器上安装适当的数据库引擎和驱动程序,以便能够使用ADODB连接到数据库。
3-adodb数据操作
1、ADODB 是Active Data Objects Data Base 的简称,它是一种PHP 存取数据库的中间函式组件。
PHP 在数据库的支持上是很令人称道的,几乎所有的知名数据库系统都有对应的函数群支持,而且支持的很完整。
但很不幸的,每一群数据库支持函数无论在名称或参数结构上,都有很大的差异,这使得PHP的系统开发者在面临更换数据库时,总会觉得痛苦万分。
难道这个问题就没有解决方法吗?呵呵,当然有,答案就是我现在要介绍的ADODB 这个PHP 对象。
ADODB提供了完整的方法和属性让工程师去控制数据库系统,更棒的是你只要记得它的功能就好了,因为不同的数据库系统,只要修改一个属性值就可以了,ADODB会自动依据设定取用正确的PHP函数。
此外,最多再配合数据库系统修改修改SQL指令,你的PHP系统就可以在最短的时间内更换到另一个数据库系统了,如果在撰写程序时,对SQL指令能做妥善规划,那就更快了。
2、Databases Supported
$conn = ADONewConnection('mysql://root:@localhost/bbs');
4、函数介绍
查询出select * from guest where id=2的结果。
控制结果集函数:
生成HTML表格函数
分页功能函数
错误处理与调试
example1
数据库连接类ConnDB.class.php
数据库操作类AdminDB.class.php
改造index.php。
ADODB连接数据库的常用控件
'rs.Open Sql, conn, 1, 3 '后面的3是确定读写权限的
'以下参数代表了这个可选值的含义
'1 = adLockReadOnly (默认值)只读 — 不能改变数据。
'2 = adLockPessimistic 保守式锁定(逐个) — 在编辑时立即锁定数据源的记录。
Dim rs As ADODB.Recordset '创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用
Dim CnStr As String, Sql As String '创建两个字符串变量分别存放两个集合的SQL语句代码段
1、装载数据库(不属于Recordset集合)
'2)连接Oracle数据库:
'-------------------
CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data Source=" & FileName & ";Persist Security Info=True"
";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"
'4)连接SQL的数据库
'------------------
CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQSOFT;SERVER=" &
PHP ADODB的使用
运行结果如下所示。
<hr /> (mysql): SELECT * FROM mytable <hr /> Array ( [0] => Array
·382· ( [0] => 100001 [serial_no] => 100001 [1] => Simon [name] => Simon [2] => 24 [age] => 24 [3] => 1982-11-06 [birthday] => 1982-11-06 [4] => 5000.00 [salary] => 5000.00 [5] => 1000.00 [bonus] => 1000.00 ) [1] => Array ( [0] => 100002 [serial_no] => 100002 [1] => Elaine [name] => Elaine [2] => 24 [age] => 24 [3] => 1982-01-01 [birthday] => 1982-01-01 [4] => 5000.00 [salary] => 5000.00 [5] => 1000.00 [bonus] => 1000.00 ) [2] => Array ( [0] => 100003 [serial_no] => 100003 [1] => Susan [name] => Susan [2] => 31 [age] => 31 [3] => 1975-01-01 [birthday] => 1975-01-01 [4] => 9000.00 [salary] => 9000.00 [5] => 2000.00 [bonus] => 2000.00 ) )
PHP中使用ADODB库连接和操作MySQL数据库
PHP中使用ADODB库连接和操作MySQL数据库PHP是一种广泛应用于Web开发的编程语言,而MySQL则是一种常用的关系型数据库管理系统。
在PHP中,可以使用ADODB库来连接和操作MySQL数据库,这为开发人员提供了更加便捷和灵活的数据库操作方式。
一、了解ADODB库ADODB(ActiveX Data Objects Database)是一个数据库中间件,它提供了一个统一的接口来连接各种类型的数据库,包括MySQL、Oracle、PostgreSQL等。
使用ADODB库连接和操作MySQL数据库可以极大地简化代码,提高开发效率。
下面将介绍如何使用ADODB库来连接和操作MySQL数据库。
二、安装ADODB库在使用ADODB库之前,首先需要在PHP中安装ADODB库。
可以通过以下步骤来完成安装:1. 在ADODB官方网站(不在文章中提及网址链接)上下载ADODB库的ZIP 文件。
2. 解压缩ZIP文件,并将解压后的文件夹复制到PHP的扩展库目录下。
3. 在php.ini文件中添加一行代码来启用ADODB库的扩展:extension=adodb.dll(Windows环境)或extension=adodb.so(Linux环境)。
4. 重新启动Web服务器以使配置生效。
三、连接MySQL数据库在使用ADODB库连接MySQL数据库之前,需要了解数据库的连接信息,包括主机名、用户名、密码和数据库名称。
可以使用以下代码来连接MySQL数据库:```php<?phprequire_once 'adodb/adodb.inc.php';$host = 'localhost';$user = 'root';$pass = 'password';$dbname = 'mydatabase';$conn = NewADOConnection('mysql');$conn->Connect($host, $user, $pass, $dbname);if ($conn) {echo '连接成功!';} else {echo '连接失败!';}>```以上代码中,通过require_once语句引入了ADODB库的文件,然后使用NewADOConnection()函数创建了一个MySQL连接对象。
adodb对象
Connection对象介绍Connection对象支持许多属性,可以利用这些属性来操作当前的连接状态或者获取一些基本的Connection对象的信息.有一些属性是只读的,而另一些属性是可读写的.1.Attributes属性Attributes属性设置或返回一个整型值,它用来指示对象的一项或多项特性.对于Connection对象,Attributes属性为读/写,并且其值可能为以下任意一个或多个XactAttributeEnum值的和(默认为零).▲AdXactCommitRetaining:执行保留的提交,即通过自动调用CommitTrans启动新事务。
并非所有提供者都支持该常量。
▲AdXactAbortRetaining:执行保留的中上,即通过自动调用RollbackTrans启动新事务。
并非所有提供者都支持该常量。
mandTimeout属性CommandTimeout属性设置或返回长整型值,该值指示等待命令执行的时间(单位为秒)。
默许值为30,指示在终止尝试和产生错误之前执行命令期间需要等待的时间。
使用Connection对象或Command上的CommandTimeout属性,允许由于网络拥塞或服务器负载过重产生的延迟而取消Execute方法调用。
如果在CommandTimeout属性中设置的时间间隔内没有完成命令执行,将产生错误,然后ADO将取消该命令。
如果将该属性设置为零,ADO将无限期等待直到命令执行完毕。
3.ConnectionString属性ConnectionString属性设置或返回字符串值,这个字符串值包含用来建立到数据源的连接的信息.使用ConnectionString属性,通过传递包含一系列由分号分隔的argument=value语句的详细连接字符串可指定数据源。
ADO支持ConnectionString 属性的四个参数,任何其他参数将直接传递到提供者而不经过ADO处理。
Access数据库与ADODB编程入门
Access数据库与ADODB编程入门Access数据库与ADODB编程入门既然已经了解了那些数据库中的基本概念,那么我们就只说说在VB 中使用数据库编程,首先有一点要注意,数据库的使用与我们以往所使用的文本文件不同.例如我们使用文本文件,来记录各种有用的数据.那么大致有以下几步:读取文件--格式化数据--关闭文件--使用数据如果数据量较大,需要进行筛选,且存放数据的源文件可能不定时变更,那么我们可以用一个临时文件来存放有用的数据,这样可大大提高程序的效率.要[格式化数据]时,我们首先要进行筛选,然后还得进行分类, 这样文件中的字符串才能被转换成有用的信息来供程序使用.这样一来,不用说,处理速度将大大减慢,而且就算你设计的数据格式比较科学,当数据量非常大时,文件的容量也会变的让普通计算机无法承受.相对文本文件来说数据库的使用也大致分为以下几步:打开数据库--查找数据--使用数据--关闭数据库从中可以看出,里面少了一步格式化数据,因为数据库本身在存储数据时,它就是按照一定的格式来进行存储的.其次是,数据库与文本文件返回数据的方法不同.如果把文本文件比作一个T extbox的话,那么数据库更像是一个ListBox.使用文本文件时我们需要从整个Textbox中取出有用的信息,并进行处理,而Listbox则可以根据需要返回特定的某一项.由于VB本身并不带有可以访问数据库的类,所以我们需要引用一个包含能访问数据库的类来使用数据库.这里我们采用ADODB,相比DAO和能访问数据库的API来说,它比DAO更灵活,更强大;而比起API,它更简单易用,更适合初学者.而Access数据库比起SQL,也相对简单了很多,且能够满足中小型应用程序的需要,所以我们在使用数据库时,选择了Access.就像使用文本文件来存储数据一样,我们需要先设计好数据结构,只不过在设计Access数据库的结构时,我们需要用到其它的程序来进行详细的规划.建议采用的程序是office中的Access或VB自带的VISDATA.当数据库设计好了以后,我们可以开始"数据库编程"了.首先,我们需要引用ADO.具体的方法是,在"工程"--"引用"中,找到"MicrosoftActiveXDataObject*.*Library",这里的"*.*"是指的时ADO的版本号,一般来说,应用程序或ActiveX 控件都具有向下兼容性,所以我们尽可能选择比较新的版本.以确保程序在能识别旧版本Access的同时,也能识别较新版本的Access.然后我们需要在程序中创建一个对象.就好比我们在窗体上添加一个FileBox才能看到文件名一样,只有创建了ADO对象,我们才能够访问数据库.常用的对象有两个,Connection和Recordset.创建这两个对象的具体方法是:1.在引用后,使用New关键字,如Private Conn As New ADODB.ConnectionPrivate Reco As New ADODB.Recordset2.在没引用时,用Create Object创建对象:Dim Conn,RecoSet Conn = CreateObject("ADODB.Connection")Set Reco = CreateObject("ADODB.Recordset")创建了对象之后,下一步我们要做的就是打开数据库了.先看下面的代码,可以成功的打开数据库.Conn.open "Provider = Microsoft.Jet.OLEDB.4.0; DataSource = D:\Main.mdb"这句代码打开了D盘中的Main.mdb这个数据库.Connection.Open方法的第一个参数是连接代码,它将传递给系统的数据库引擎.前半部分"Provider = Microsoft.Jet.OLEDB.4.0", 它表示了数据库的类型.不同的数据库可能会不同.后半句"Source= d:\main.mdb" 它表示了数据库所在的绝对路径.打开数据库之后,还要打开表.假如数据库中有一个表,表名为"Users",字段有两个,一个为用户名,一个为密码.那么看以下代码.1.想返回"Users"中,[用户名]为"去年烟花"的[密码]Recordset.open "Select 密码 From Users Where用户名 = '去年烟花'",Connection,1,1之后我们就可以把用户输入的密码进行比较,看是否允许登录.If Recordset.eof and Recordset.bof thenMsgbox "用户不存在!",16ElseIf PassWord = Recordset("密码").value thenMsgbox "登录成功!",64ElseMsgbox "密码错误!",32End IfEnd IfRecordset.Close2.假设Admin已经成功登录系统,我们想把所有的用户名和密码都显示出来Recordset.open "Select * From Users",Connection,1,1这时,表已经被打开,我们就用以下代码把它显示出来.Do while Not Recordset.eofPrint "用户名:" & Recordset("用户名").value & "密码:" & Recordset("密码").valueRecordset.MoveNextLoopRecordset.Close由以上代码示例可以看出,打开表时,可以只打开其中的一个字段,也可以打开所有.第一个参数是SQL语句.Select [字段名 ] From 表名 [Where条件]这里的条件可以省略.且字段名也可以用"*"来代替所有字段.需要注意的是,如果你用(1)中的方法打开,那么(2)后面显示的代码就不能再用在(1)中.因为(1)里并没有打开[用户名]字段,所以这一句Recordset("密码")就没有值存在,还有可能出错.后面的条件,可以用"="、">"、"<"等运算符.比如"WhereID>32".(这里假设[ID]为数字型.)这是打开的部分.第二个很重要的部分就是查询记录.数据库它并不是把所有记录全部放到一个变量中备用的.而是以"当前记录"的形式来返回一个值.所以我们想从中找到有用的信息, 就必须要对信息进行定位/筛选.定位:移动到下一条Recordset.MoveNext移动到上一条Recordset.MovePrevious移动到最后一条Recordset.MoveLast移动到第一条Recordset.MoveFrist移动到某一条Recordset.MoveNumber筛选:Recordset.Find"条件"如:[用方法(2)打开表之后]Private Sub Command1_Click()Recordset.Find "用户名 = " & " text1.text "If Recordset.Eof <> True ThenMsgbox "该用户的密码是:"&Recordset("密码").value,64ElseMsgbox "未找到该用户的资料!",16End IfEndSubMoveNext只有当Eof不为True时,才可用,否则发生错误.而MovePrevious刚是Bof不为True时....而只要Eof和Bof中有一个不为真时,也就是说只要有一条记录时,它就可以使用.Find方法中的条件和Open时的第一个参数中的条件表述方法是完全一致的.当在已打开的记录集中,找不到该记录时,Eof为True.找到则当前的值就是符合条件的记录.第三个部分就是添加/修改/删除记录.修改记录很简单,先按以上的方法找到相关记录之后,给记录赋值就可以了.比如:[(修改密码)按方法(1)打开表之后]Recordset("密码").value="123456"Recordset.Updat a需要注意的就是,在修改完成后,要调用Updat a方法,这样修改才能生效.而添加记录则可以用以下代码来实现:Recordset.addnewRecordset("用户名").value="Admin"Recordset("密码").value="Admin"Recordset.Updat a删除记录:Recordset.deleteRecordset.uptata这里,先要调用Addnew方法,增加一条新记录,然后对这个新记录中的各字段赋值,最后再调用Updata方法.到这里就差不多了,最后说一下上面提到的几个方法.Recordset.OpenSQL语句,数据源,游标类型,打开方法SQL语句不用说了,就是Select那啥的,目的就是按要求从表中返回数据数据源就是一个打开之后的Connection对象.去他妈的游标类型,填1(即openkeyset)就可以了[偷笑ing]打开方法对应了几个常数,具体哪几个可以从对象浏览器里看.对应数值的意义:1只读2独占3可写4自已可写,别人可读Connection.open连接代码,服务器用户名,密码。
ADODB的简单使用
ADODB的简单使⽤最简单的使⽤⽅式取回关联数组形式的结果集把结果集⽤做对象的⽅法更简短⼀些$result->FetchNextObject()常⽤函数qstr(),DBDate(),Insert_ID(),Affected_Rows()(都是ADODB对象的⽅法)分页要⽤到的⽅法,SelectLimit($query,$num,$offset)ADODB的prepare query(编译查询?也许会提⾼性能,主要是它的占位参数⽅式⽐较喜欢)智能事务处理(Smart Transactions)查询缓存CacheExecute()使⽤AutoExecute(),⽣成Update 和 Insert SQL语句最简单的使⽤⽅式:<?php// 导⼊adodbinclude("adodb.inc.php");// 设置连接类型mysql$db = NewADOConnection("mysql");// 连接数据库$db->Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");// 定义查询sql$query = "SELECT * FROM yourtable";// 执⾏sql$result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());// 循环输出,注意要MoveNext(),否则死循环while (!$result->EOF){echo $result->fields[1] . " - " . $result->fields[2] . "\n";$result->MoveNext();}// 打印结果集中的记录数echo "\n[" . $result->RecordCount() . " rows returned]\n";// 关闭连接$db->Close();>取回关联数组形式的结果集,代码如下(多了#注释下⾯的⼀句):<?php// 导⼊adodbinclude("adodb.inc.php");// 设置连接类型mysql$db = NewADOConnection("mysql");// 连接数据库$db->Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");# 配置取回的结果集为关联数组$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;// 定义查询sql$query = "SELECT * FROM yourtable";// 执⾏sql$result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());// 循环输出,注意要MoveNext(),否则死循环while (!$result->EOF){echo $result->fields['firstname'] . " - " . $result->fields['lastname'] . "\n";$result->MoveNext();}// 打印结果集中的记录数echo "\n[" . $result->RecordCount() . " rows returned]\n";// 关闭连接$db->Close();>把结果集⽤做对象的⽅法更简短⼀些($result->FetchNextObject()):<?php// 导⼊adodbinclude("adodb.inc.php");// 设置连接类型mysql$db = NewADOConnection("mysql");// 连接数据库$db->Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");// 定义查询sql$query = "SELECT * FROM yourtable";// 执⾏sql$result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());// 循环输出while ($row = $result->FetchNextObject()){echo $row->firstname . " - " . $row->lastname . "\n";}// 打印结果集中的记录数echo "\n[" . $result->RecordCount() . " rows returned]\n";// 关闭连接$db->Close();>常⽤函数qstr(),DBDate(),Insert_ID(),Affected_Rows()(都是ADODB对象的⽅法):<?php// 导⼊adodbinclude("adodb.inc.php");// 设置连接类型mysql$db = NewADOConnection("mysql");// 连接数据库$db->Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");# 使⽤qstr转码,让“'”适应不同的DB$title = $db->qstr("It's Not Me, It's You!");# DBDate()函数来转换不同数据库之间的⽇期内定格式$createdate = $db->DBDate(time());$query = "INSERT INTO yourtable (title, createdate) VALUES ($title, $createdate)"; $result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());# 打印由 Insert_ID()取得的刚刚插⼊的记录的IDif ($result){echo "Last inserted ID is " . $db->Insert_ID();}$query = "DELETE FROM yourtable WHERE author = 'J. Luser'";$result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());# 受影响的记录数if ($result){echo $db->Affected_Rows() . " rows deleted";}// 关闭连接$db->Close();>分页要⽤到的⽅法,SelectLimit($query,$num,$offset):<?php// 导⼊adodbinclude("adodb.inc.php");// 设置连接类型mysql$db = NewADOConnection("mysql");// 连接数据库$db->Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");# 取5条记录,从记录2开始(偏离量是从0开始的,记录2实际是第三条记录了)$query = "SELECT * FROM yourtable";$result = $db->SelectLimit($query, 5, 2) or die("Error in query: $query. " . $db->ErrorMsg());// 循环输出while (!$result->EOF){echo $result->fields[1] . " - " . $result->fields[2] . "\n";$result->MoveNext();}// 关闭连接$db->Close();>ADODB的prepare query(预备查询,也许会提⾼性能,主要是它的占位参数⽅式⽐较喜欢):<?php// 导⼊adodbinclude("adodb.inc.php");// 设置连接类型mysql$db = NewADOConnection("mysql");// 连接数据库$db->Connect("localhost", "user", "pass", "youdb") or die("Unable to connect!");# prepare query$query = $db->Prepare("INSERT INTO yourtable (firstname, lastname) VALUES (?, ?)");# 插⼊的数据$arr = array('wensi','cater');# 执⾏$result = $db->Execute($query, array($arr[0], $arr[1])) or die("Error in query: $query. " . $db ->ErrorMsg());// 关闭连接$db->Close();>智能事务处理(Smart Transactions):<?php// 以前的判断⽅式,要判断每个execute的执⾏情况$conn->BeginTrans();$ok = $conn->Execute($sql);if ($ok) $ok = $conn->Execute($sql2);if (!$ok) $conn->RollbackTrans();else $conn->CommitTrans();// 现在,如果正常CompleteTrans()会提交事务,如果有错误则CompleteTrans()会回滚$conn->StartTrans();$conn->Execute($sql);$conn->Execute($Sql2);$conn->CompleteTrans();>查询缓存(CacheExecute()):<?phpinclude('adodb.inc.php');include('tohtml.inc.php');// 定义cache⽬录$ADODB_CACHE_DIR = '/usr/local/ADOdbcache';$conn =ADONewConnection('mysql');$conn->PConnect('localhost','userid','password','database');# cache 15 secs$rs = $conn->CacheExecute(15, 'select * from table');rs2html($rs);>使⽤AutoExecute(),⽣成Update 和 Insert SQL语句:<?php// INSERT$record["firstname"] = "Bob";$record["lastname"] = "Smith";$record["created"] = time();$insertSQL = $conn->AutoExecute($yourtable, $record, 'INSERT');// UPDATE$record["firstname"] = "Caroline";$record["lastname"] = "Smith";# 更新了Smith的firstname$insertSQL = $conn->AutoExecute($yourtable, $record, 'UPDATE', 'id = 1'); >。
ADOdb的学习资料
ADOdb(Active Data Object DataBase)是一套用于PHP数据库操作的类库,它纠正了PHP访问不同数据库要调用不同数据库接口函数的不便。
使用它提供的统一类库成员方法,可以使开发者能比较容易地切换不同类型的数据库,而不需要修改源程序。
类似于Windows平台下的ADO,为开发者提供了虚拟数据库访问层,统一了不同数据库接口方式。
先来看看ADOdb有何优点1.支持的数据库类型多得惊人:MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, MS SQL, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP, 和通常的ODBC, ODBTP。
支持的数据库的完整列表(/adodb/supported.databases.html)2.其操作方式与语法功能类似于M$的ADO,对windows asp环境下的程序员有不小的吸引.3.与其他php类库专注于select语法不同,ADOdb提供了对于insert、update的全面支持,还提供了对不同数据库下日期、字符串数据类型格式的统一转换函数。
4.可以对查询的结果进行缓存,通过减少相同的查询,可以在一定程度上提高数据库的执行效率。
5.可以进行事务处理,即对一组数据库操作进行统一控制。
通过ADOdb在代码级上的有效控制,对事务的成功和失败作出相应处理,即事务各项都正确时,结束事务;有错误发生时,纠正所有改动,恢复原来状态。
简单介绍下ADOdb的安装和使用1.使用环境a.php环境,因为它本来就是基于PHP语言的。
具体的说:PHP4.0.5以后版本支持ADOdb 4.61PHP4.1.0以后版本支持ADOdb 4.63(目前2005-05最高版本)b.Python环境,Python2.3以后版本支持2.如何得到ADOdb?PHP版本/project/showfiles.php?group_id=42718Python版本/project/showfiles.php?group_id=427183.如何调用ADOdb通常情况只需要调用adodb/adodb.inc.php文件,它包含了所有数据库类库的操作方法。
ado的recordset对象的方法
(原创实用版3篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的3篇《ado的recordset对象的方法》,供大家借鉴与参考。
下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(3篇)《ado的recordset对象的方法》篇1ADO(ActiveX Data Objects)是一种用于在 Microsoft Windows 平台上处理数据的技术。
Recordset 对象是 ADO 中的一个重要对象,用于表示数据记录集。
以下是一些 Recordset 对象的方法:1. Open(打开):用于打开一个事先准备好的 Recordset 对象。
可以使用以下两种方式打开 Recordset:- 用 SQL 语句直接打开:`Recordset.Open("SQL 语句", Connection)`,其中 Connection 是一个 ADO Connection 对象。
- 使用存储过程打开:`Recordset.Open("存储过程名", Connection, "call StoredProcedure")`,其中 Connection 是一个 ADO Connection 对象,"call StoredProcedure" 表示调用存储过程。
2. Close(关闭):用于关闭 Recordset 对象,释放资源。
`Recordset.Close()`3. GetRowCount(获取行数):用于获取 Recordset 中的记录行数。
`Recordset.GetRowCount()`4. GetData(获取数据):用于获取 Recordset 中的数据。
vbaadodb查询结果集结构
vbaadodb查询结果集结构【原创实用版】目录1.VBA 中的 ADODB 对象2.ADODB 查询结果集的结构3.解析 ADODB 查询结果集结构正文在 VBA(Visual Basic for Applications)编程中,ADODB(ActiveX Data Objects)库被广泛应用于数据库操作。
ADODB 提供了一组功能强大的对象,可以实现对各种数据库的连接、查询、更新等操作。
本篇文章主要介绍 ADODB 查询结果集结构及其相关知识。
一、VBA 中的 ADODB 对象ADODB 库包含了许多实用的对象,如 Connection 对象、Recordset 对象、Field 对象等。
这些对象分别用于实现数据库的连接、查询结果集、字段信息等功能。
在 VBA 编程中,我们可以通过创建相应的 ADODB 对象来实现对数据库的操作。
二、ADODB 查询结果集的结构在 ADODB 中,查询结果集由 Recordset 对象表示。
Recordset 对象包含若干个字段(Field 对象)和记录(Record 对象)。
每个字段表示查询结果集中的一列,每个记录表示查询结果集中的一行。
下面详细介绍Recordset 对象的结构。
1.Recordset 对象的属性- Count:表示查询结果集中的记录数。
- EOF:表示当前记录指针是否处于文件末尾。
-BOF:表示当前记录指针是否处于文件开头。
- AbsolutePosition:表示当前记录指针在查询结果集中的绝对位置。
- Position:表示当前记录指针在查询结果集中的相对位置。
2.Recordset 对象的方法- Open(Recordset 对象,SQL 语句):打开查询结果集。
- Close(Recordset 对象):关闭查询结果集。
- MoveFirst(Recordset 对象):将记录指针移动到查询结果集的第一行。
- MoveLast(Recordset 对象):将记录指针移动到查询结果集的最后一行。
ADODB编码连接字实用例子打印
ADODB编码连接字的实例VB中,关于SQL数据库的连接是比较复杂的,但也有一个可以参考的学习思路,方法如下。
1、建立数据库链接在工具条中,有一个“数据视图窗口”的工具,用它可以建立各种数据库的链接。
建立链接的过程:点击“数据视图窗口”,出现“数据视图”窗体,点击选中“数据链接”,按右键,点击“添加数据链接”,出现“数据链接属性”窗口,有四个菜单:“提供程序”、“连接”、“高级”、“所有”。
选中“提供程序”菜单,这里有许多用于链接的驱动程序,选中“Microsoft OLE DB Provider for SQL Server”,点击“下一步”。
“Microsoft OLE DB Provider for SQL Server”是真正的SQL数据库连接字用的驱动程序。
当选中“Microsoft OLE DB Provider for SQL Server”,点击“下一步”,则自动进入“连接”窗体界面。
这个“连接”窗体界面的内容,随前面选取的驱动程序而定。
因为前面选择的是“Microsoft OLE DB Provider for SQL Server”,所以,“连接”窗体的主要内容就是直接访问SQL数据库的相关内容的设置,如下:在“…….服务器名称”一栏中怎么选择呢?如SQL数据库服务器安装时是选择当地默认的实例,即以本地计算机名代替的服务器,则此处应填写的内容是:(local),或者是:本地的计算机名。
估计,非本地的则可填写:服务器的IP地址或服务器名称。
在“输入登录服务器的信息”一栏中怎么选择呢?当选择“使用指定的用户名和密码”一项时,用户名与密码是在SQL服务器安装时选定的内容(值)。
若不用密码及用户名登入,则连接字的密码应代之为:Integrate Security=SSPI,表示用“Windows NT 集成安全设置”之意。
但实际的ADODB的连接字是不能用这个NT打开的。
在“服务器上选择数据库”一栏中怎么选择呢?当前面两项内容选择正确后,此处的内容是存在可选的,选中即可。
Adodb入门教程
1. 前言ADODB是Active Data Objects Data Base 的简称,它是一种PHP存取数据库的函式组件。
现在SFS3 系统(校园自由软件交流网学务系统) 计划的主持人陈莹光老师,决定采用此一组件,为了让更多有心参与该项目的伙伴们能够顺利加入发展的行列,小弟认为有必要把ADODB 的中文入门介绍写出来,以方便伙伴们参考备查。
虽然PHP 是建构Web 系统强有力的工具,但是PHP 存取数据库的功能,一直未能标准化,每一种数据库,都使用另一种不同且不兼容的应用程序接口(API)。
为了填补这个缺憾,因此才有ADODB 的出现。
一旦存取数据库的接口予以标准化,就能隐藏各种数据库的差异,若欲转换至其它不同的数据库,将变得十分容易。
目前ADODB 支持的数据库种类非常地多,例如:MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, Sybase, DB2 以及一般的ODBC (其中PostgreSQL、Informix、Sybase 的driver 是由自由软件社群发展之后贡献出来的)。
使用ADODB 最大的优点之一是:不管后端数据库如何,存取数据库的方式都是一致的,开发设计人员不必为了某一套数据库,而必须再学习另一套不同的存取方法,这大大减轻开发人员的知识负担,过去的知识往后仍可继续使用,转移数据库平台时,程序代码也不必做太大的更动。
其实ADODB 这样的发展理念,并不是首创的,DBI 比ADODB 出现得更早,它提供Perl 存取数据库时,使用一致的API 呼叫接口。
相信用过Perl + DBI 的朋友,再来用ADODB 时,会有一种似曾相识的感觉。
另外,ADODB 对用过ASP 的人而言,应该不陌生,这类朋友对ADODB 应该很容易接受。
我们来看一下,ADODB 的简单用法:<?php// 引入adodb 的inc 档,才能呼叫adodb 提供的函式include('adodb/adodb.inc.php');// 选择连接的数据库种类,以建立联机对象,// 一旦对象建立,即可使用其成员函式来处理数据库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• MoveLast() :将记录指针移动到结束的位置。某些数据 库不予支持 • RecordCount() :返回总记录行数 • FieldCount() :返回总字段个数 • GetRowAssoc($toupper=true) :返回当前记录行的数 组,以字段名为键。如果$toupper=true,则字段名将全 部转为大写 • GetArray([$number_of_rows]) :从记录的当前位置返回 $number_of_rows行记录构成的数组,数组索引将从0到 $number_of_rows-1。如果没有定义$number_of_rows ,则将返回全部记录 • GetRows([$number_of_rows])与GetArray()相同 • GetAssoc([$force_array])返回一个关联数组。如果超过2 列,则默认使用第一列作为数组的键。如果给定 $force_array=true,则每一列数组都将返回
使用ADODB
• 你可以在 /ADOdb 取得最新版 的ADODB。 • 基本上使用ADODB是相当容易的,取得压缩文件解开, 我建议将整个内容都解到ADODB的目录里。 • ADODB目前支援MySQL,Oracle, Microsoft SQL Server,Sybase,Sybase SQL Anywhere,Informix, PostgreSQL,FrontBase,Interbase (Firebird 及 Borland 版本),Foxpro,Access,ADO 和 ODBC。 ADODB也有透过ODBC成功连结Progress及DB2的报告
建立一个持久连接
<?php include("adodb.inc.php"); $db = & NewADOConnection('postgres'); $db->PConnect('host=localhost port=5432 dbname=postgres'); ?>
• 在连接数据库之前决定是使用持久连接,还是非持久连接。
ADORecordSet
• FetchRow() :返回当前行的记录数组。遇到EOF则返回 • FetchInto(&$array) :将当前行的记录放入数组$array。如果 遇到EOF将返回false,否则返回1 • FetchObject($toupper=true) :返回当前行的记录组成的对象 。与FetchRow()方法类似。如果$toupper=true,则返回对象 的属性名将全部转为大写 • FetchObj()与FetchObject(false)类似:只是返回字段名不会被 转换 • FetchNextObject($toupper=true) :返回当前行的记录组成的 对象,并自动移动到下一记录行。如果$toupper=true,则返回 对象的属性名将全部转为大写 • FetchNextObj()与FetchNextObject(false)类似:只是返回字段 名不会被转换 • Move($to) :将记录指针从当前记录位置移动到由$to指定的行 • MoveNext() :将记录指针从当前记录位置移动到下一记录行 ,如同Move(1)、MoveFirst()将记录指针恢复到开始的位置。 某些数据库不予支持
数据源名(DSN)的支持
• 自ADODB4.51版本开始,可以传递一个数据源 名(DSN)给NewADOConnection来连接数据库 • DSN是一类似于URL的字符串。
– – – – – – Drive:给出数据库驱动的名称 Username:数据库的用户名称 Password:数据库的密码 Hostname:给出的数据库的主机地址 Database:特定的数据库 Option和value是可能的选项
改成其它数据库
• 现在改成Oracle数据库,程序代码只修改一行 – $db=&NEWADOConnection(‘oracle’); • 无论何时你需要连结到那一个数据库时,你必需使用 NEWADOConnection()函数建立了一个连结物件。 • NEWADOConnection接受一个选择性参数, <database-namehere>。如果没有参数被指定,它将会使用被 ADOLoadCode() 所载 入的最后一个资料库。 NEWADOConnection() 是另一个相同的函 数。 • 当你建立好一个连结物件时,你并没有真的连结上你的资料库。你仍 需要使用 $conn->Connect() 或者 $conn->PConnect() 两个方法 来完成真正的连结。 • 你可以叁考教学手册里的范例,对上面的说明做更深入的了解。
• 在所有的驱动程序中,当设置了persist或persistent时 ,将强制建立一个持久连接。debug选项允许对程序进 行调式。Fetchmode选项将允许调用方法 setFetchMode(). • 当使用DSN后,NewADOConnection()将隐式地调用 方法connect()或pconnect()进行数据库连接。如果失 败,将返回false;成功返回一个数据库连接对象。
• •
使用ADORecordSet对象提供的方法处理查询结果是相当方便的。 通常,可以将FetchObject()、FetchObj()、FetchRow()等方法与MoveNext() 方法配合使用 <?php include("adodb.inc.php"); //包含ADODB类库 $conn = &NewADOConnection("access"); //建立Access数据库连接 $conn->PConnect("northwind"); //连接到northwind主机的数据库 $recordSet = $conn->Execute("SELECT * FROM products"); if (!$recordSet) { echo $conn->ErrorMsg(); //错误信息 } else{ while ($rows = $recordSet->FetchRow() ) { echo $rows [0]. " ". $rows[1]. "<BR>"; $recordSet->MoveNext(); //记录后移一行 } } $recordSet->Close(); //可选的,关闭记录集 $conn->Close(); //可选的,关闭连接 ?>
ADODB
姓 名:马明 电 话:60889797 Q Q: 44562586 MAIL:alex0018@
概述
• PHP在数据库的支援上是很令人称道的,几乎所有的知名数据库 系统都有对应的函数群支援,而且支援的很完整。但很不幸的, 每一群数据库支援函数无论在名称或参数结构上,都有很大的差 异,这使得PHP的系统开发者在面临更换数据库时,总会觉得痛 苦万分. • ADODB提供了完整的方法和属性让工程师去控制数据库系统, 更好的是你只要记得它的功能就好了,因为不同的数据库系统, 只要修改一个属性值就可以了,ADODB会自动依据设定取用正 确的PHP函数。 • 最多再配合数据库系统修改修改SQL指令,你的PHP系统就可以 在最短的时间内更换到另一个数据库系统了,如果在编写程序时 ,对SQL指令能做妥善规划,那就更快了。
特色
• 对熟悉Windows的工程师而言,ADODB很容易使用,因为ADODB 里的很多功能和Microsoft的ADO很像。 • 与其它的PHP数据库类别不同,它们大多集中在处理与 select 指令 有关的东西,而ADODB对于 inserts 及 update 也提供额外的支援 ,并且可以很快的连结到多数据库 • 特别对照系统是内建的,所以我们可以设定或描述像CHAR, TEXT及 STRING在不同的数据库间其实是相同的数据类型。 • 更容易去移植,因为所有与数据库相依的程序代码被都隐藏在后端, 所以使用者不再需要去移植类别里的逻辑。
• DSN的格式:
– driver://username:password@hostname/database[?option[=value]]
• 合法的option选项如下:
– – – – – – 对于所有数据库:persist,persistent, debug, fetchmod 对于Interbase/Firebird而言:dialect, charset, buffers, role 对于MicrosoftADO而言:charpage 对于MySQL而言:clientflages 对于MySQLi而言:port, socket, clientflags 对于Oracle8/9而言:nls_date_format, charset
?> • 如果在DSN中有一些特殊的字符(如:/,:,?等),譬如密码中包含/字 符,应该在初次使用它们时用rawUrlEncode()进行转码:
– $pwd=rawUrlEncode($pwd); $dsn = 'mysql://root:$pwd@localhost/mydb';
执行查询操作
• 使用select语句进行查询检索,要获取记录结果 ,可以直接使用ADOConnection对象和 ADORecordSet对象所提供的方法。 • 在ADODB中通常使用Execute()方法执行数据库 查询。如果查询成功,可以返回ADORecordSet 对象,包含一个查询结果的记录集.
与数据库连接
• 无论何种数据库系统,首先连接到该数据库服务器上。 • 当使用ADODB时,必须包含一个文件adodb.inc.php, 是所有数据库所能用到的共同方法和数据的文件。 • ADODB使用自己的数据库连接对象
– ADOConnection