The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
DBD:QBase - QuickBase DBD for DBI Perl by Ben Lindstrom

Copyrighted (c) 1995, What Software, INC
Work derived from DBD::Oracle by Time Bunce Copyrighted (c) 1994-95

   You may distribute under the terms of either the GNU General Public
   License or the Artistic License, as specified in the Perl README file.

WARNING: This is the FIRST PUBLIC ALPHA release of QuickBase Database driver 			
	for DBI Perl.  It *IS* incomplete, and It may be UNRELIABLE!  Use at 
	your OWN risk.  Therefor, What Software, nor myself, can be blamed for 
	this driver causing any damage or loss of money to your company.  
	However, if you do find a bug, please e-mail it to me at:  	
	Mouring@netnet.net

Note: Lines with "!" infront means something has changed.

Initial Comments:

! This is a bare bones release.  Fetch and non-returning SQL commands work, 
! also $cursor->rows returns the correct value for how many rows affects
! by the fetch command.
!
! For non-implement, or known bugs see TODO file included in package.
!
! Thanks to George Johnston at Filoli for his current help on fetch and
! I'm sure he'll be helping out more in the future.  Also, thanks to DBI
! mailinglist for their replies to my bothersome questions that might have
! been asked a million times already. =)
!
! Hopefully the next release will have cursors, rollback, and commit, but with
! that you'll need a new version of the QuickBase engine.  So, I'll not talk
! to much more about it. 
!
! There is a partly done Makefile.PL...I'm having a few problems, but it
! GREATLY makes my instructions easier to deal with. =)
!
Another little problem you should know is that this is a STATICLY linked module
ONLY.  Since Perl5.001m seems to have problems loading Dynamic ObjC runtime
code at runtime.  This will hopefully be fixed in later version.

Installing:

1] Before you can install DBD:QBase you need the following:
  * Perl5.001m (NOTE the "m"!!) source
  * DBI .63 (or higher) source
  * QuickBase 4.1 (Note, it's not been tested with other version)

2] Unarchives Perl5, DBI, and QBase.  Put the DBI directory under your
	recently created perl5/ext directory.  Do the same for QBase.
	(note: NeXT's symlinks are not link Linux/SunOS/Solaris so please
	 don't just symlink the directories in..If you do then you'll have
	 to run perl5/miniperl ext/DBI/Makefile.PL by hand since it will
	 file to run.)
!2.1] go to ext/QBase and do a perl makefile.PL if you have a copy of
!	perl install.  Or else ../../mainperl (?) if you don't.  Without
!	doing this is will fail..IT complains about DBI being static.
!	ignore  all the warnings. =)

3] Now run ./Configure and when you see the following lines add in the
	correct responses.
  * Any additional ld flags (NOT including libraries)? [-u libsys_s]
	-- Add: -ObjC
  * Any additional libraries? [-ldbm]
        -- Add: -lMedia_s -lNeXT_s -lQBSQL5_1
  * What extensions do you wish to load statically? [ ]
	-- Add: DBI QBase

4] run "Make"  
 	* 1st Note: For some reason on NeXT DBI bombs out because of multiply
		declares of crypt() I personally commented it out of the
		perl.h file.  There are better ways of doing this, but this
		way will work for now..Perl programmers should check for
		crypt() and not declare it/use it if it exits. 
        * 2th node: It might take 2 times through the make file.  Since 
		perl seems to dynamicly build and modify some of it's source
		on demand.
!	* 3rd  note: If on linking you get an error about -L  look in your 
!		perl5/ext.libs my  Makefile.PL is a bit broke. =)

5] Now after QBase failes to compile go to perl5/lib/auto and do the following 
   command: (This is a known problem I'll fix in next version)
	kiki# ln -s DBD/QBase QBase

6] Then go back to perl5/ and do a "make" again.  It should correctly
	compiled QBase now. 

7] Then just do a "make install"  and your done.

Testing if driver exists:

Now, DBI/DBD comes with a standard way to test to see if the driver is up
to spec.  Since DBD::QBase is not quite up to that, but I something like it
called "qb.pl".  It's more their as a demostation to how to write perl/dbi
code, but if you run it (make sure you have a database called "testdb"
with user "test" and "testdb" as the password.) you can check to see if the
driver was correctly installed. (Note, it will fail on the SELECT statement
since fetching from the database is broken.)

The database format for testdb should be have a table called Table1 with the 
fields: age  (int) and name (varchar).

Final words of wisdom:

Good luck, may the force be with you.  And if you have any problems please
feel free to ask me about it. If you see something that does not look
right in the code.  Fix it and send it to me...<shrug>  There are a lot of
DBD stubs that have code in it, but that does not mean that it was written
by me or even works. =)

Hopefully in the install I did not leave anything out...If I did please tell
me.

The code is really not documented. Sorry, but documenation takes a backseat to
figuring out what code does and how to quickly hack something into being.

BTW, if you are using this driver; please subscribe to the perldb-interest 
list. Myself and other more qualified then myself are always their willing
to help.

Foot Notes:

QuickBase is programmed and copyrighed product of SofDesign Corporation.
	For more information on QuickBase: http://www.quickbase.com

DBI/DBD drivers and information can be found at: 	
	http://www.hermetica.com/technologia/DBI/