Ruby DBI Read 操作
DBI 提供了一些从数据库获取记录的不同方法。假设 dbh 是一个数据库句柄,sth 是一个语句句柄:
序号 | 方法 & 描述 |
---|---|
1 | db.select_one( stmt, *bindvars ) => aRow | nil 执行带有 bindvars 绑定在参数标记前的 stmt 语句。返回第一行,如果结果集为空则返回 nil。 |
2 | db.select_all( stmt, *bindvars ) => [aRow, …] | nil
db.select_all( stmt, *bindvars ){ |aRow| aBlock } |
3 | sth.fetch => aRow | nil 返回下一行。如果在结果中没有下一行,则返回 nil。 |
4 | sth.fetch { |aRow| aBlock } 为结果集中剩余的行调用给定的块。 |
5 | sth.fetch_all => [aRow, …] 返回保存在数组中的结果集的所有剩余的行。 |
6 | sth.fetch_many( count ) => [aRow, …] 返回保存在 [aRow, …] 数组中的往下第 count 行。 |
7 | sth.fetch_scroll( direction, offset=1 ) => aRow | nil 返回 direction 参数和 offset 指定的行。除了 SQL_FETCH_ABSOLUTE 和 SQL_FETCH_RELATIVE,其他方法都会丢弃参数 offset。direction 参数可能的值,请查看下面的表格。 |
8 | sth.column_names => anArray 返回列的名称。 |
9 | column_info => [ aColumnInfo, … ] 返回 DBI::ColumnInfo 对象的数组。每个对象存储有关某个列的信息,并包含该列的名称、类型、精度等其他更多的信息。 |
10 | sth.rows => rpc 返回执行语句处理的行数 Count,如果不存在则返回 nil。 |
11 | sth.fetchable? => true | false 如果可能获取行,则返回 true,否则返回 false。 |
12 | sth.cancel 释放结果集所占有的资源。在调用该方法后,您就不能在获取行了,除非再次调用 execute。 |
13 | 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 表。
这将产生以下结果: