当前位置:数据库 > MySQL >>

指南从MySQL转向ADODB的方法(1)

答案:高级材料

  Insert 和 Update

  假设现在你要把下面的数据插入到数据库中.

  ID = 3

  TheDate=mktime(0,0,0,8,31,2001) /* 31st August 2001 */

  Note= sugar why don't we call it off

  当你使用另外一个数据库的时候,你的插入操作可能不会成功。

  第一个问题是每个数据库都有不同的默认日期格式。MySQL默认格式是YYYY-MM-DD ,

  然而其它数据库有不同的默认格式。ADODB有一个DBDate()的函数,它能将日期转

  换成正确的格式。

  接下来的一个问题是Note字段值里的don't 应该作为引文。在MySQL中,使用

  don\'t 来解决这个问题,但在一些其它的数据库中(Sybase, Access, Microsoft

  SQL Server)使用don''t 。qstr()解决了这个问题。

  那么我们怎么使用这个函数呢? 像下面这样:

  $sql = "INSERT INTO table (id, thedate,note) values ("

  . $ID . ','

  . $db->DBDate($TheDate) .','

  . $db->qstr($Note).")";$db->Execute($sql);ADODB 也支持 $connection->Affected_Rows() (返回上次update或delete操作影响的

  行数) 和 $recordset->Insert_ID() (返回insert声明生成的上一个自增编号)。但要

  说明的是不是所有的数据库都支持这两个函数。

  MetaTypes

  你可以找到更多关于你调用recordset的方法FetchField($fieldoffset)所选择的每个

  字段(我同时使用字段和列这两个词)的信息。它将返回一个有三个属性(名称,类

  型和最大长度)的对象。

  例如:$recordset = $conn->Execute("select adate from table");

  $f0 = $recordset->FetchField(0);那么 $f0->name 的值将被设为 'adata', $f0->type 的值将被设为 'date'. 如果

  max_length 未知,它被设为-1。

  处理不同类型的数据库的一个问题是每个数据库常常用不同的名字来调用相同的类型。

  例如timestamp 类型在某一个数据库中叫做datetime 类型,而在另一个是叫做time

  类型。 因此 ADODB 有个专门的 MetaType($type, $max_length) 函数对下面的类型

  进行标准化:

  C: character 和 varchar 类型

  X: text 或者 long character (例如.多于255 字节宽度).

  B: blob 或者 binary 图像

  D: date

  T: timestamp

  L: logical (boolean)

  I: integer

  N: numeric (float, double, money)

  在上面的例子中,

  $recordset = $conn->Execute("select adate from table");

  $f0 = $recordset->FetchField(0);

  $type = $recordset->MetaType($f0->type, $f0->max_length);

  print $type; /* 应该显示 'D' */

  Select Limit 和 Top 支持

  ADODB 有一个叫$connection->SelectLimit($sql,$nrows,$offset)的函数,它允许你

  获得一个记录集(recordset)的子集。它会在Microsoft产品上使用本地的SELECT TOP,

  在PostgreSQL和MySQL上使用SELECT ... LIMIT,并在不支持这项功能的数据库上模拟

  这个功能。

  缓存支持

  ADODB 允许你在你的文件系统上缓存记录集结果,只需用$connection->CacheExecute($secs2cache,$sql)

  和$connection->CacheSelectLimit($secs2cache,$sql,$nrows,$offset)在指定的超时

  时间段后重新向数据库服务器发出查询。

  PHP4 Session 处理接口支持

  ADODB 也支持PHP4 session 处理接口. 你可以使用ADODB在一个数据库中存储你的

  session变量。要获得更多下信息,访问http://php.weblogs.com/adodb-sessions

  鼓励作为商业用途

  如果你正计划编写你要转售的商业PHP软件产品,你应该考虑ADODB。ADODB使用GPL发

  布。这意味这你也可以在商业软件中合法的使用它,同时保持你的代码所有权。十分

  鼓励ADODB作为商业用途!因为上述的原因我们内部也正在使用它。

  结束语

  作为你能耐心的看完这篇文章的答谢,下面是let's call the whole thing off 的

  

上一个:一个简单的mysql数据库分页的程序模板
下一个:Mysql日期和时间函数不求人的具体方法

更多MySQL疑问解答:
如何将SQL 2005中的数据实时同步到MYSQL中
java对mysql数据库备份后,它的备份记录怎么显示查出来啊。 求告诉、
如何查询mysql表中的相似度。
mysql 查看表有没有被锁
mysql front 和mysql
mysql 建表 问题 求解答 为什么不能创建表
mysql查询问题
mysql中怎么让union all不打乱顺序
mysql中修改表字段
mysql用户操作表权限的问题(java)
mysql 如何在查询时防止插入
mysql中的 insert into select 问题,想在同个服务器下复制不同数据库的表的内容,在线求方法,谢谢
mysql中的concat用法!
使用mysql中,我想把表product的数据备份到同个服务器创建一个新表出来,刚学习mysql,用SELECT INTO 出错
mysql delete语句删除指定列的指定关键字的所以数据
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,