Skip to content

Commit

Permalink
DBDI work in progress - actually fetches data!
Browse files Browse the repository at this point in the history
  • Loading branch information
timbunce committed Jul 20, 2010
1 parent 659bd0f commit 082f531
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 9 deletions.
5 changes: 2 additions & 3 deletions DBDI.pm6
Expand Up @@ -12,10 +12,9 @@ class DBDI does java::sql::DriverManager {
Str $v3, # java.lang.String
--> java::sql::Connection # java.sql.Connection
) {
say "> getConnection";
my $conninfo = "host=localhost user=testuser password=testpass dbname=zavolaj";
say "> getConnection $v1";
my %opt;
my $con = DBDI_pg::Driver.connect($conninfo);
my $con = DBDI_pg::Driver.connect($v1, %opt);
say "< getConnection";
return $con;
}
Expand Down
22 changes: 20 additions & 2 deletions DBDI_pg.pm6
Expand Up @@ -10,6 +10,24 @@ use libpq;
class DBDI_pg::ResultSet does java::sql::ResultSet {
has $conn;
has $db_conn;
has $db_res;
has $row_num;

method next (
--> Bool # boolean
) {
return (++$row_num <= PQntuples($db_res));
} # throws java.sql.SQLException

multi method getString (
Int $v1, # int
--> Str # java.lang.String
) {
return Str if PQgetisnull($db_res, $row_num-1, $v1);
my $field = PQgetvalue($db_res, $row_num-1, $v1-1);
return $field;
} # throws java.sql.SQLException

}

class DBDI_pg::Statement does java::sql::Statement {
Expand All @@ -31,7 +49,7 @@ class DBDI_pg::Statement does java::sql::Statement {
die sprintf("FETCH ALL failed: %s", $msg);
}

my $result = DBDI_pg::ResultSet.new(:conn(self), :$db_conn);
my $result = DBDI_pg::ResultSet.new(:conn(self), :$db_conn, :$db_res);
say "< executeQuery";
return $result;
}
Expand All @@ -57,7 +75,7 @@ class DBDI_pg::Driver does java::sql::Driver {

multi method connect (
Str $v1, # java.lang.String
#Hash $v2,
Hash $v2,
--> java::sql::Connection # java.sql.Connection
) {
say "> connect '$v1'";
Expand Down
14 changes: 10 additions & 4 deletions dbdi.pl6
Expand Up @@ -2,8 +2,14 @@ use v6;

use DBDI;

my $con = DBDI.getConnection('', '', '');
my $stmt = $con.createStatement;
my $conninfo = "host=localhost user=testuser password=testpass dbname=zavolaj";

my $con = DBDI.getConnection($conninfo, '', '');

my $stmt = $con.createStatement;

my $result = $stmt.executeQuery('select * from pg_database');
die $! if $!;
say $result.perl;

while ( $result.next ) {
say $result.getString(1);
}
6 changes: 6 additions & 0 deletions libpq.pm6
Expand Up @@ -42,6 +42,12 @@ sub PQfname( OpaquePointer $res, Int $fieldnum )
is native('libpq')
{ ... }

sub PQgetisnull( OpaquePointer $res, Int $tuplenum, Int $fieldnum )
returns Int
is export
is native('libpq')
{ ... }

sub PQgetvalue( OpaquePointer $res, Int $tuplenum, Int $fieldnum )
returns Str
is export
Expand Down

0 comments on commit 082f531

Please sign in to comment.