返回列表 回复 发帖

ADODB应用进阶

    关于adodb的简单操作如插入更新删除数据等,大家已经在adodb压缩包的一个教程文件了解到了。adodb的类库在教程中之是简单的列出,关于建表等常用操作并没详细的使用教程,下面我们来看adodb教程进阶操作。

1.创建数据库
  1. CreateDatabase($dbname, $optionsarray=false)
复制代码
这函数就不介绍了 几乎和mysql一样。
2.创建数据表
分析语句
  1. CreateTableSQL($tabname, $fldarray, $taboptarray=false)
复制代码
应用 $conn->CreateTableSQL($tabname, $fldarray)
$tabname:         表名
$fldarray  :        语句[或数组方式]
$taboptarray:其他
因为adodb面向的数据库有差异,在不同的数据库语句也有变化,因此adobd并不支持传统的sql语句,而是按照自己设定的语句分析执行。
语句格式如下 $fieldname $type $colsize $otheroption
也可以数组方式  array($fieldname, $type, [,$colsize] [,$otheroptions]*)
数据栏位的类型定义
  1. C:  varchar
  2. X:  Largest varchar size
  3. XL: For Oracle, returns CLOB, otherwise same as ';X'; above
  4. C2: Multibyte varchar
  5. X2: Multibyte varchar (largest size)
  6. B:  BLOB (binary large object)
  7. D:  Date (some databases do not support this, and we return a datetime type)
  8. T:  Datetime or Timestamp
  9. L:  Integer field suitable for storing booleans (0 or 1)
  10. I:  Integer (mapped to I4)
  11. I1: 1-byte integer
  12. I2: 2-byte integer
  13. I4: 4-byte integer
  14. I8: 8-byte integer
  15. F:  Floating point number
  16. N:  Numeric or decimal number
复制代码
数据栏位的属性定义
  1. AUTO                For autoincrement number. Emulated with triggers if not available.
  2.                 Sets NOTNULL also.
  3. AUTOINCREMENT        Same as auto.
  4. KEY                Primary key field. Sets NOTNULL also. Compound keys are supported.
  5. PRIMARY                 Same as KEY.
  6. DEF                Synonym for DEFAULT for lazy typists.
  7. DEFAULT                The default value. Character strings are auto-quoted unless
  8.                 the string begins and ends with spaces, eg '; SYSDATE ';.
  9. NOTNULL                If field is not null.
  10. DEFDATE                Set default value to call function to get today';s date.
  11. DEFTIMESTAMP        Set default to call function to get today';s datetime.
  12. NOQUOTE                Prevents autoquoting of default string values.
  13. CONSTRAINTS        Additional constraints defined at the end of the field definition.
复制代码
现在看一个示例
以数组方式定义语句
  1. $flds_a = array(
  2.         array(';id';,       ';I';, ';AUTO';, ';PRIMARY';),
  3.         array(';a_admin';,  ';C';, ';30';,   ';DEFAULT'; => ';0';,       ';NotNull';),
  4.         array(';a_pas';,    ';C';, ';50';,   ';DEFAULT'; => ';0';,       ';NotNull';),
  5.         array(';a_data';,   ';C';, ';10';,   ';DEFAULT'; => ';no';,      ';NotNull';),
  6.         array(';a_item';,   ';C';, ';10';,   ';DEFAULT'; => ';no';,      ';NotNull';),
  7.         array(';a_right';,  ';C';, ';10';,   ';DEFAULT'; => ';no';,      ';NotNull';),
  8.         array(';a_time';,   ';T';),
  9.         array(';a_end';,    ';T';),
  10.         array(';a_remark';, ';B';)
  11. );
复制代码
AUTO 自增
PRIMARY 主键
DEFAULT 默认值设置方式 用 ';DEFAULT'; => ';值';
array(';a_remark';,         ';B';                                             )
B类型为BLOB   不必设置其他属性
T 时间格式 默认的格式就是 YYYY-MM-DD HH:II:SS
C varchar 后面是长度限制
建表
  1. $dict = NewDataDictionary($conn);
  2. $sqlarray_t = $dict->CreateTableSQL(';test_table';, $flds_a);
  3. $dict->ExecuteSQLArray($sqlarray_t);
复制代码
当$conn->debug=1;时
会返回 根据数据库不同 而变化的分析后的代码.

3.取得数据库信息
MetaDatabases() 以数组形式返回主机上的数据库列表
应用 $conn->MetaDatabases()
  1. $dbs = $conn->MetaDatabases();
  2. $num_rows = count($dbs);
  3. for(&#36;i=0;&#36;i<&#36;num_rows;&#36;i++){
  4. echo &#36;dbs[&#36;i];
  5. }
复制代码
MetaTables(&#36;ttype=false, &#36;showSchema=false) 以数组形式返回当前数据库中的数据表
应用 &#36;conn->MetaTables(&#36;tablename)
  1. &#36;tables = &#36;conn->MetaTables();
  2. &#36;num_rows = count(&#36;tables);
  3. for(&#36;i=0;&#36;i<&#36;num_rows;&#36;i++){
  4. echo &#36;tables[&#36;i];
  5. }
复制代码
MetaColumnNames(&#36;table)  以数组形式返回当前数据表中的栏位名
应用 &#36;conn->MetaColumnNames(&#36;table)
  1. &#36;re = &#36;conn->MetaColumnNames(&#36;table);
  2. &#36;num_fields = count(&#36;re);
  3. for(&#36;i=0;&#36;i<&#36;num_fields;&#36;i++){
  4. echo &#36;re[&#36;i];
  5. }
复制代码
当然adodb功能是很强大的,其他的函数一般用不到,这里就不再继续了。如果有感兴趣的可以共同交流。

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。
返回列表