Ruby DBI 方法
-
DBI方法
DBI提供了几种不同的方法来从数据库中获取记录。假设dbh是数据库句柄而sth是语句句柄-方法 说明 db.select_one( stmt, *bindvars ) = > aRow | nil 使用绑定到参数标记的bindvars预先执行stmt语句。 返回第一行,如果结果集为空,则返回nil。 db.select_all( stmt, *bindvars ) => [aRow, ...] | nil db.select_all( stmt, *bindvars ){ |aRow| aBlock } 使用绑定到参数标记的bindvars预先执行stmt语句。调用此方法时不阻塞将返回包含所有行的数组。如果给出一个块,将为每一行调用该块。 sth.fetch => aRow | nil 返回下一行。如果结果集中没有其他行,则返回nil。 sth.fetch { |aRow| aBlock } 为结果集的其余行调用给定的块。 sth.fetch_all => [aRow, ...] 返回数组中收集的结果集的所有剩余行。 sth.fetch_many( count ) => [aRow, ...] 返回在[aRow,...]数组中收集的下一个计数行。 sth.fetch_scroll( direction, offset=1 ) => aRow | nil 返回由direction参数和offset指定的行。对于SQL_FETCH_ABSOLUTE和SQL_FETCH_RELATIVE以外的所有参数,将丢弃参数offset。有关方向参数的可能值,请参见下表。 sth.column_names => anArray 返回列的名称。 column_info => [ aColumnInfo, ... ] 返回一个DBI::ColumnInfo对象的数组。每个对象都存储有关一列的信息,并包含其名称,类型,精度等。 sth.rows => rpc 返回已执行语句的“行处理计数”;如果不存在,则返回nil。 sth.fetchable? => true | false 如果可以获取行,则返回true,否则返回false。 sth.cancel 释放结果集所拥有的资源。调用此方法后,将无法再获取行,直到再次调用execute。 sth.finish 释放准备好的语句所拥有的资源。调用此方法后,不能再对该对象调用其他方法。 -
direction 参数
以下值可以用于 fetch_scroll 方法的 direction 参数-方法 说明 DBI::SQL_FETCH_FIRST 获取第一行。 DBI::SQL_FETCH_LAST 获取最后一行。 DBI::SQL_FETCH_NEXT 获取下一行。 DBI::SQL_FETCH_PRIOR 获取上一行。 DBI::SQL_FETCH_ABSOLUTE 在位置偏移处获取行。 DBI::SQL_FETCH_RELATIVE 获取与当前偏移的行。 -
示例
以下示例显示如何获取语句的元数据。参考一下我们在上一章中创建的EMPLOYEE表。运行上面的代码,如果您能正确连接数据库,应该返回类型下面的消息: