Latest web development tutorials

Ruby DBI Lire l'opération

DBI fournit un certain nombre de différentes façons d'obtenir les enregistrements de la base de données.DHP Supposons est une poignéede base dedonnées,sth est un descripteur d'instruction:

序号方法 & 描述
1db.select_one( stmt, *bindvars ) => aRow | nil
执行带有bindvars绑定在参数标记前的stmt语句。返回第一行,如果结果集为空则返回nil
2db.select_all( stmt, *bindvars ) => [aRow, ...] | nil

db.select_all( stmt, *bindvars ){ |aRow| aBlock }

执行带有bindvars绑定在参数标记前的stmt语句。调用不带有块的该方法,返回一个包含所有行的数组。如果给出了一个块,则会为每行调用该方法。
3sth.fetch => aRow | nil
返回下一行 。如果在结果中没有下一行,则返回nil
4sth.fetch { |aRow| aBlock }
为结果集中剩余的行调用给定的块。
5sth.fetch_all => [aRow, ...]
返回保存在数组中的结果集的所有剩余的行。
6sth.fetch_many( count ) => [aRow, ...]
返回保存在 [aRow, ...] 数组中的往下第count行。
7sth.fetch_scroll( direction, offset=1 ) => aRow | nil
返回direction参数和offset指定的行。除了 SQL_FETCH_ABSOLUTE 和 SQL_FETCH_RELATIVE,其他方法都会丢弃参数offsetdirection参数可能的值,请查看下面的表格。
8sth.column_names => anArray
返回列的名称。
9column_info => [ aColumnInfo, ... ]
返回 DBI::ColumnInfo 对象的数组。每个对象存储有关某个列的信息,并包含该列的名称、类型、精度等其他更多的信息。
10sth.rows => rpc
返回执行语句处理的行数Count,如果不存在则返回nil
11sth.fetchable? => true | false
如果可能获取行,则返回true,否则返回false
12sth.cancel
释放结果集所占有的资源。在调用该方法后,您就不能在获取行了,除非再次调用execute
13sth.finish
释放准备语句所占有的资源。在调用该方法后,您就不能在该对象上调用其他进一步操作的方法了。

paramètre de direction

Les valeurs suivantes peuvent être utilisées direction méthode paramètrefetch_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获取距离当前行该偏移量的行。

Exemples

L'exemple suivant montre comment obtenir un état des métadonnées. Supposons que nous ayons la table EMPLOYEE.

#! / Usr / bin / ruby ​​-w

exiger "dbi"

commencer
     # Se connecter au serveur MySQL dbh = DBI.connect ( "DBI: Mysql: TESTDB: localhost", 
	                    "Testuser", "test123")
     sth = dbh.prepare ( "SELECT * FROM EMPLOYÉ 
	                    Lorsque les revenus>? ")
     sth.execute (1000)
     si sth.column_names.size == 0 alors
        puts "Déclaration n'a aucun jeu de résultats"
        printf "Nombre de lignes affectées:% d \ n", sth.rows
     autre
        puts "Déclaration a un jeu de résultats"
        rows = sth.fetch_all
        printf "Nombre de lignes:% d \ n", rows.size
        printf "Nombre de colonnes:% d \ n", sth.column_names.size
        sth.column_info.each_with_index faire | info, i |
          printf "--- colonne% d (% s) --- \ n", i, info [ "nom"]
          printf "sql_type:% s \ n", info [ "sql_type"]
          printf "type_name:% s \ n", info [ "type_name"]
          printf "précision:% s \ n", info [ "précision"]
          printf "échelle:% s \ n", info [ "échelle"]
          printf "nullable:% s \ n", info [ "nullable"]
          printf "indexées:% s \ n", info [ "indexé"]
          printf "primaire:% s \ n", info [ "primaire"]
          printf "unique:% s \ n", info [ "unique"]
          printf "mysql_type:% s \ n", info [ "mysql_type"]
          printf "mysql_type_name:% s \ n", info [ "mysql_type_name"]
          printf "mysql_length:% s \ n", info [ "mysql_length"]
          printf "mysql_max_length:% s \ n", info [ "mysql_max_length"]
          printf "mysql_flags:% s \ n", "informations [mysql_flags"]
      fin
   fin
   sth.finish
sauvetage DBI :: DatabaseError => e
     puts "Une erreur est survenue"
     puts "Code d'erreur: # {e.err}"
     puts "Message d'erreur: # {e.errstr}"
assurer
     dbh.disconnect de connexion si DHP # déconnexion du serveur
fin

On obtient les résultats suivants:

Déclaration a un jeu de résultats
Nombre de lignes: 5
Nombre de colonnes: 5
--- Colonne 0 (FIRST_NAME) ---
sql_type: 12
type_name: VARCHAR
précision: 20
échelle: 0
nullable: true
indexées: false
primaire: false
uniques: false
mysql_type: 254
mysql_type_name: VARCHAR
mysql_length: 20
mysql_max_length: 4
mysql_flags: 0
--- Colonne 1 (LAST_NAME) ---
sql_type: 12
type_name: VARCHAR
précision: 20
échelle: 0
nullable: true
indexées: false
primaire: false
uniques: false
mysql_type: 254
mysql_type_name: VARCHAR
mysql_length: 20
mysql_max_length: 5
mysql_flags: 0
--- Colonne 2 (AGE) ---
sql_type: 4
type_name: ENTIER
précision: 11
échelle: 0
nullable: true
indexées: false
primaire: false
uniques: false
mysql_type: 3
mysql_type_name: INT
mysql_length: 11
mysql_max_length: 2
mysql_flags: 32768
--- Colonne 3 (SEX) ---
sql_type: 12
type_name: VARCHAR
précision: 1
échelle: 0
nullable: true
indexées: false
primaire: false
uniques: false
mysql_type: 254
mysql_type_name: VARCHAR
mysql_length: 1
mysql_max_length: 1
mysql_flags: 0
--- Colonne 4 (REVENU) ---
sql_type: 6
type_name: FLOAT
précision: 12
échelle: 31
nullable: true
indexées: false
primaire: false
uniques: false
mysql_type: 4
mysql_type_name: FLOAT
mysql_length: 12
mysql_max_length: 4
mysql_flags: 32768