Hello Monks,

I'm writing a Perl Module, that I will release soon, called HDB. HDB is an easy, fast and powerfull way to access a DB without use SQL or DBI directly. you just use some methods, variables and conditions based in Perl concept.

The best thing of HDB is that you don't need to know what DB you are using, you just create the HDB object (connection) and HDB make all the work around between DB differences. In other words, your code for DB will be portable between DB types and OS.

For now HDB works for HDB::MySQL and HDB::SQLite. But I want to release the first version with more DB types avaliable. One of them is Oracle. Since I don't have Oracle here, and isn't a free thing, and I'm not a Oracle Geek, I want some help/informations to make the HDB::Oracle work around.

INFORMATIONS THAT I NEED: (Please, reply with this part) Q1) How I make this 2 REGEX querys, like in MySQL: select * from foo where(bar REGEX "^[aeiou]+$") ; select * from foo where(bar REGEX "^[^aeiou]+$") ; A: Q2) How I LOCK and UNLOCK a table? When I unlock will unlock all the tables (like in MySQL) or just one? A: Q3) What types are suported? Based in MySQL, what is the similar: VARCHAR(100) = ? VARCHAR(150) = ? TEXT = ? MEDIUMTEXT = ? TEXT = ? SMALLINT = ? FLOAT = ? DOUBLE = ? FLOAT(10) = ? FLOAT(10,4) UNSIGNED = ? BOOLEAN = ? ** Please, include the maximal size of each (varchar,integer,float,dou +ble,etc...) Q4) How I make an AUTO_INCREMENT column? For example, and column called ID where when a row is inserted in the table, this col will be improved automatically with the next ID. And need to be an PRIMARY KEY. A: Q5) How to set a columns as PRIMARY KEY? A: Q6) Is the LIKE resource enable? It works like that?: select * from foo where(bar LIKE "%text_in_the_midle%") ; A: Q7) How to get the list of tables? A: Q8) How to get columns of a table and the types of them? A: Q9) How to get the maximal value of a integer column?: select max(ID) as ID from foo ; A:
I will be very glad for any reply! If you know any answer, please post it.

For who want to see some of HDB use:

use HDB ; my $HDB = HDB->new( type => 'sqlite' , file => 'test.db' , ) ; ... or ... my $HDB = HDB->new( type => 'mysql' , host => 'some.domain.com' , user => 'foo' , pass => 'bar' , ) ; $HDB->create('users',[ 'user' => 100 , 'name' => 100 , 'age' => 'int(200)' , 'more' => 1024*4 , ]); $HDB->insert( 'users' , { user => 'joe' , name => 'joe tribianny' , age => '30' , more => '*' , } ) ; ... or ... $HDB->update( 'users' , 'user == joe' , age => '40' ) ; ... or ... $HDB->users->insert( { user => 'joe' , name => 'joe tribianny' , age => '30' , more => \%hash , } ) ; my %hash_decoded = $HDB->select('users' , 'name =~ joe' , col => 'mo +re' , return => '$$%' ) ; ... my @sel = $HDB->select('users' , 'name =~ joe' , return => '@%' ) ; foreach my $sel_i ( @sel ) { my %cols = %$sel_i ; ... } ... or ... my @sel = $HDB->select('users' , 'name != ross' , return => '@$' ) ; foreach my $sel_i ( @sel ) { my @cols = split("::",$sel_i) ; ... } ... my @tables = $HDB->tables ; ... my @sel = $HDB->cmd("select * from foo", '@@') ; ... # Using DBI: my $sth = $HDB->dbh->prepare("INSERT INTO users VALUES (?, ?, ? , ? +, ?)") ; $sth->execute("foo", "barr", "foo\@mail.com" , '' , 1) ;

Graciliano M. P.
"The creativity is the expression of the liberty".


In reply to DBD::Oracle help for portable DB handle code/module! by gmpassos

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.