On Fri, May 04, 2001 at 03:55:00PM +0100, ruby-talk / ruby-lang.org wrote:
> On Fri, May 04, 2001 at 10:43:32PM +0900, Renald Buter wrote:
> > On Fri, May 04, 2001 at 03:02:00PM +0100, ruby-talk / ruby-lang.org wrote:
> > > Actually, the only interface i know (a very little bit) which works (partly)
> > > like this is the db-interface
> > > in visual basic. But of course, this can be implemented in ruby in a much
> > > more elegant way...
> > Hmmm. I like the DBI approach better, or even de JDBC approach. Using DBI
> > would allow Perl converts (like me :) to adapt more easily...
> Since I never used Perl, but of course want to steal any good idea I can
> find for my interface ( if I actually get to write it).....
> 
> How does the Perl DBI Interface work?
> 

If you want to know exactly, try http://dbi.symbolstone.org.

But for a small introduction, allow me to present some perl code on the
ruby listing here...

	#!/usr/bin/perl

	use DBI;

	$dsn = q{dbi:mysql:database=test_db;hostname=localhost};
	$dbh = DBI->connect($dsn, "user", "pass");

	$q = q{select * from test where id > 10};
	$qh = $dbh->prepare($q);
        $qh->execute;
	# or combine into $qh = $dbh->do($q);

	while (@row = qh->fetchrow) {
	   $str = join ",",@row;
	   print "$str\n";
	}

Which would translate into something like

	#!/usr/bin/ruby

	require 'dbi'

	dsn = %q{dbi:mysql:database=test_db;hostname=localhost}
	dbh = DBI.connect(dsn,"user","pass")

	q = %q{select * from test where id > 10};
	qh = dbh.prepare(q);
        qh.execute;

	qh.fetchrow.each do
	   |row|
	   puts row.join(",")
	end

> > FWIW, I was just looking around for the same thing, but I did not code
> > anything yet, since a MySQL interface _is_ available -- which is enough for
> > me at the moment
> Well, I plan to build my library on top of libmysql-ruby (but of course also
> want to to support other dbs - but since I used only mysql until yet, I will
> start with this).

Well good luck with it. Just look at the source of DBI.pm, I would say

Renald.