PEAR MDB数据库抽象层一次编写—随处运行
时间:2007-12-23 来源:不详 作者:迈克DB
'type' => 'inputfile',
'filename' => './myfile.gif'
);
$blob = $mdb->createlob($binary_lob); $character_lob = array(
'type' => 'data',
'data' => 'this would be a very long string container the clob data'
);
$clob = $mdb->createlob($character_lob);
如你能看到的,mdb::createlob() 被传递一个关系数组。type 键的值可能是以下中的一个:data, inputfile 或者 outputfile。前两个用于你想要把 lob 写入的时候。假如你有一个储存在变量中的 lob,你应当在 需要使用 inputfile 时从文件直接读取 lob。最后,outpufile 应当在你想要从中读取 lob 时使用。取决于你是否使用数据或者 inputfile 你需要给 filename 键或者 data 键指定一个值,像上面的例子那样。现在,我们将把前面的 lob 储存到中去。 $p_query = $mdb->preparequery('insert into files (id, b_data, c_data) values (1, ?, ?)'); $mdb->setparamblob($p_query, 1 , $blob, 'b_data'); copyright dedecms
$mdb->setparamclob($p_query, 2 , $clob, 'c_data'); $result = $mdb->executequery($p_query);
为了从中获取上面的文件,我们需要首先从中选择数据并且使用 mdb::createlob() 创建 lob 对象。这次我们将设置 'type' 为 'outputfile' $mdb->query('select b_data from files where id = 1'); $binary_lob = array(
'type' => 'outputfile',
'result' => $result,
'row' => 0,
'field' => 'b_data',
'binary' => 1,
'filename' => './myfile2.gif'
);
$blob = $mdb->createlob($binary_lob);
现在我们能够使用 mdb::readlob() 从结果集中读取 lob。传递长度 0 给 mdb::readlob() 意味着整个 lob 被读取和储存在我们前面指定的文件中。一旦任务完成了,我们可以把资源释放了。你也可以设置任何大于零的长度并且使用一个 while 循环检查 mdb::endoflob() 来读取 lob。 $mdb->readlob($blob, $data, 0); 织梦内容管理系统
注重你不要把这个获取函数和 bulk 获取函数像 mdb::fetchall()搞混了,因为这将在大部分 php 扩展中导致问题。在一些时候,mdb 可能能够使用 bulk 获取函数获得 lob。 如我们在这节所见,mdb 特性本身的原生数据类型集自动映射于中的原生数据类型。这保证了无论我们发送和从接收什么样的数据,它都能与使用的 rdbms 无关的使用相同的格式。如我在本节开篇已经提到的,这明显需要使用的数据类型是 mdb 预期的。这种需要被用于确保映射所耗费的代价很小。下一节将教给我们 mdb 如何辅助在中使用正确的数据类型。
使用 xml schema 文件 利用在上个段落中描述的特性,你能编写真正的独立的程序。但是 mdb 尝试向前更加迈出一步:它答应你用 xml 定义你的 schema。一个治理器把这种 schema 转换为给每种 rdbms 的必要的 sql 语句。这意味着你能对所有支持的 rdbms 使用相同的 schema。本节的例子能够在 xml_schema 目录中找到。 我们现在将从头编写一个 xml schema 文件。首先,我们必须定义一个 xml 文档。定义是包含在一个 database 标签之中的。的名字是使用 name 标签定义的。create 标签告诉治理器是否需要在它不存在的时候被创建。假如你把你的 schema 文件分割成好几个文件你你首先提交给治理器的那个文件中把 create 设置为 1。 <?xml version="1.0" encoding="iso-8859-1" ?>
文章评论
共有位Admini5网友发表了评论 查看完整内容