ทับทิม DBI ดำเนินการอ่าน
DBI มีหลายวิธีที่แตกต่างกันที่จะได้รับการบันทึกจากฐานข้อมูลDBH สมมติว่าเป็นจัดการฐานข้อมูลฏเป็นคำสั่งจับ:
序号 | 方法 & 描述 |
---|---|
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 } 执行带有bindvars绑定在参数标记前的stmt语句。调用不带有块的该方法,返回一个包含所有行的数组。如果给出了一个块,则会为每行调用该方法。 |
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 释放准备语句所占有的资源。在调用该方法后,您就不能在该对象上调用其他进一步操作的方法了。 |
พารามิเตอร์ทิศทาง
ค่าต่อไปนี้สามารถนำมาใช้ทิศทางพารามิเตอร์วิธีfetch_scroll:
常量 | 描述 |
---|---|
DBI::SQL_FETCH_FIRST | 获取第一行。 |
DBI::SQL_FETCH_LAST | 获取最后一行。 |
DBI::SQL_FETCH_NEXT | 获取下一行。 |
DBI::SQL_FETCH_PRIOR | 获取上一行。 |
DBI::SQL_FETCH_ABSOLUTE | 获取在该位置偏移处的行。 |
DBI::SQL_FETCH_RELATIVE | 获取距离当前行该偏移量的行。 |
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการที่จะได้รับงบข้อมูลเมตา สมมติว่าเรามีตารางการทำงานของพนักงาน
#! / usr / bin / ทับทิม -w จำเป็นต้องมี "DBI" เริ่มต้น # เชื่อมต่อกับเซิร์ฟเวอร์ MySQL DBH = DBI.connect ( "DBI: Mysql: TestDB: localhost" "testuser", "test123") dbh.prepare ฏ = ( "SELECT * จากพนักงาน ในกรณีที่เงิน>? ") sth.execute (1000) ถ้า sth.column_names.size == 0 แล้ว ทำให้ "คำชี้แจงมีผลไม่ได้ตั้งค่า" printf "จำนวนแถวรับผลกระทบ:% d \ n", sth.rows อื่น ทำให้ "คำชี้แจงมีผลให้การตั้งค่า" แถว = sth.fetch_all printf "จำนวนแถว:% d \ n", rows.size printf "จำนวนคอลัมน์:% d \ n", sth.column_names.size sth.column_info.each_with_index ทำ | ข้อมูลผม | printf "--- คอลัมน์% D (% s) --- \ n", I, info [ "ชื่อ"] printf "sql_type:% s \ n", ข้อมูล [ "sql_type"] printf "TYPE_NAME:% s \ n", ข้อมูล [ "TYPE_NAME"] printf "ความแม่นยำ:% s \ n", ข้อมูล [ "แม่นยำ"] printf "ขนาด:% s \ n", ข้อมูล [ "โย"] printf "nullable:% s \ n", ข้อมูล [ "nullable"] printf "การจัดทำดัชนี:% s \ n", ข้อมูล [ "การจัดทำดัชนี"] printf "หลัก:% s \ n", ข้อมูล [ "หลัก"] printf "ที่ไม่ซ้ำกัน:% s \ n", ข้อมูล [ "ไม่ซ้ำกัน"] printf "mysql_type:% s \ n", ข้อมูล [ "mysql_type"] printf "mysql_type_name:% s \ n", ข้อมูล [ "mysql_type_name"] printf "mysql_length:% s \ n", ข้อมูล [ "mysql_length"] printf "mysql_max_length:% s \ n", ข้อมูล [ "mysql_max_length"] printf "mysql_flags:% s \ n", ข้อมูล [ "mysql_flags"] ปลาย ปลาย sth.finish กู้ภัย DBI :: DatabaseError => E ทำให้ "เกิดข้อผิดพลาด" ทำให้ "รหัสข้อผิดพลาด: # {e.err}" ทำให้ "ข้อผิดพลาด: # {e.errstr}" ทำให้มั่นใจ การเชื่อมต่อ dbh.disconnect ถ้า dbh # ตัดการเชื่อมต่อจากเซิร์ฟเวอร์ ปลาย
นี้ก่อให้เกิดผลลัพธ์ต่อไปนี้:
คำสั่งมีชุดผล จำนวนแถว: 5 จำนวนคอลัมน์: 5 --- คอลัมน์ 0 (FIRST_NAME) --- sql_type: 12 TYPE_NAME: VARCHAR ความแม่นยำ: 20 ขนาด: 0 nullable: จริง จัดทำดัชนี: เท็จ หลักเท็จ ไม่ซ้ำกัน: เท็จ mysql_type: 254 mysql_type_name: VARCHAR mysql_length: 20 mysql_max_length: 4 mysql_flags: 0 --- คอลัมน์ที่ 1 (LAST_NAME) --- sql_type: 12 TYPE_NAME: VARCHAR ความแม่นยำ: 20 ขนาด: 0 nullable: จริง จัดทำดัชนี: เท็จ หลักเท็จ ไม่ซ้ำกัน: เท็จ mysql_type: 254 mysql_type_name: VARCHAR mysql_length: 20 mysql_max_length: 5 mysql_flags: 0 --- คอลัมน์ 2 (อายุ) --- sql_type: 4 TYPE_NAME: จำนวนเต็ม ความแม่นยำ: 11 ขนาด: 0 nullable: จริง จัดทำดัชนี: เท็จ หลักเท็จ ไม่ซ้ำกัน: เท็จ mysql_type: 3 mysql_type_name: INT mysql_length: 11 mysql_max_length: 2 mysql_flags: 32768 --- คอลัมน์ 3 (เพศ) --- sql_type: 12 TYPE_NAME: VARCHAR ความแม่นยำ: 1 ขนาด: 0 nullable: จริง จัดทำดัชนี: เท็จ หลักเท็จ ไม่ซ้ำกัน: เท็จ mysql_type: 254 mysql_type_name: VARCHAR mysql_length: 1 mysql_max_length: 1 mysql_flags: 0 --- คอลัมน์ 4 (รายได้) --- sql_type: 6 TYPE_NAME: FLOAT ความแม่นยำ: 12 ขนาด: 31 nullable: จริง จัดทำดัชนี: เท็จ หลักเท็จ ไม่ซ้ำกัน: เท็จ mysql_type: 4 mysql_type_name: FLOAT mysql_length: 12 mysql_max_length: 4 mysql_flags: 32768