[pod] [xml]

NAME

DBD::mysqlPP - Perlだけで記述したDBI用MySQLドライバ

SYNOPSIS

    use DBI;
    $dsn = "dbi:mysqlPP:database=$database;host=$hostname";
    $dbh = DBI->connect($dsn, $user, $password);
    $drh = DBI->install_driver("mysqlPP");
    $sth = $dbh->prepare("SELECT * FROM foo WHERE bla");
    $sth->execute;
    $numRows = $sth->rows;
    $numFields = $sth->{'NUM_OF_FIELDS'};
    $sth->finish;

EXAMPLE

  #!/usr/bin/perl
  use strict;
  use DBI;
  # データベースへ接続
  my $dbh = DBI->connect("dbi:mysqlPP:database=test;host=localhost",
                         "joe", "joe's password",
                         {'RaiseError' => 1});
  # テーブル'foo'をドロップ。'foo'が存在しない時は失敗するかもしれない。
  # したがって evalで括る。
  eval { $dbh->do("DROP TABLE foo") };
  print "Dropping foo failed: $@\n" if $@;
  # 新たにテーブル'foo'を作成する。 これは失敗しないはずなので、
  # エラーをキャッチしない。
  $dbh->do("CREATE TABLE foo (id INTEGER, name VARCHAR(20))");
  # 'foo'に任意のデータをインサートする。名前をクオートするために
  # $dbh->quote() を使用する。
  # quoting the name.
  $dbh->do("INSERT INTO foo VALUES (1, " . $dbh->quote("Tim") . ")");
  # 上記と同じ処理だがプレースホルダを使用する。
  $dbh->do("INSERT INTO foo VALUES (?, ?)", undef, 2, "Jochen");
  # テーブルからデータを読み出す。
  my $sth = $dbh->prepare("SELECT id, name FROM foo");
  $sth->execute();
  while (my $ref = $sth->fetchrow_arrayref()) {
    print "Found a row: id = $ref->[0], name = $ref->[1]\n";
  }
  $sth->finish();
  # データベースから切断する。
  $dbh->disconnect();

DESCRIPTION

DBD::mysqlPPはPerlだけで実装したMySQLデーベース用のクライアントインタフェイスです。このモジュールはMySQLのサーバとクライアント間のネットワークプロトコルを実装しているので、libmysqlclientなどの他のMySQLクライアントライブラリを必要としません。つまりこれはMySQLが移植されていないOSからMySQLサーバへ接続できることを意味します。萌え〜ッ!

次の宣言でインタフェイスが使用可能になります。

    use DBI;

その後任意の数のMySQLデータベースサーバと接続し、簡単なオブジェクト指向のAPIを通じてそれらのデータベースに任意の数のクエリを送ることが出来ます。データベースハンドルとステートメントハンドルの2種類のオブジェクトが使用できます。次の記述で connectメソッドはデータベースハンドルを返します:

  $dbh = DBI->connect("dbi:mysqlPP:database=$db;host=$host",
		      $user, $password, {RaiseError => 1});

データベースに接続できたなら、次の記述でSQLステートメントを実行することが出来ます:

  my $query = sprintf("INSERT INTO foo VALUES (%d, %s)",
		      $number, $dbh->quote("name"));
  $dbh->do($query);

quoteとdoメソッドの詳細は DBI(3) を参照してください。別の方法は

  $dbh->do("INSERT INTO foo VALUES (?, ?)", undef,
	   $number, $name);

この場合quoteメソッドは自動的に実行されます。bind_paramメソッドについて DBI(3) を参照してください。また、データベースハンドルの詳細については DATABASE HANDLES を参照してください。

If you want to retrieve results, you need to create a so-called statement handle with:

  $sth = $dbh->prepare("SELECT id, name FROM $table");
  $sth->execute();

This statement handle can be used for multiple things. First of all you can retreive a row of data:

  my $row = $sth->fetchow_arrayref();

If your table has columns ID and NAME, then $row will be array ref with index 0 and 1. See STATEMENT HANDLES below for more details on statement handles.

I's more formal approach:

Class Methods

MetaData Method

Private MetaData Methods

DATABASE HANDLES

The DBD::mysqlPP driver supports the following attributes of database handles (read only):

  $insertid = $dbh->{'mysqlpp_insertid'};
  $insertid = $dbh->{'mysql_insertid'};

STATEMENT HANDLES

The statement handles of DBD::mysqlPP support a number of attributes. You access these by using, for example,

  my $numFields = $sth->{'NUM_OF_FIELDS'};

INSTALLATION

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

SUPPORT OPERATING SYSTEM

This module has been tested on these OSes.

DEPENDENCIES

This module requires these other modules and libraries:

  DBI
  Net::MySQL

Net::MySQL is a Pure Perl client interface for the MySQL database.

Net::MySQL implements network protool between server and client of MySQL, thus you don't need external MySQL client library like libmysqlclient for this module to work. It means this module enables you to connect to MySQL server from some operation systems which MySQL is not ported. How nifty!

DIFFERENCE FROM "DBD::mysql"

The function of DBD::mysql which cannot be used by DBD::mysqlPP is described.

Parameter of Cnstructor

Cannot be used.

Private MetaData Methods

These methods cannot be used for $drh.

Server Administration

All func() method cannot be used.

Database Handles

Cannot be used

Statement Handles

A different part.

Cannot be used.

SQL Extensions

Cannot be used.

TODO

Enables access to much metadata.

SEE ALSO

Net::MySQL, DBD::mysql

AUTHORS

Hiroyuki OYAMA <oyama@crayfish.co.jp>

COPYRIGHT AND LICENCE

Copyright (C) 2002 Hiroyuki OYAMA. Japan. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.