Get these two files finally committed for Peter...sorry for delay :(

This commit is contained in:
Marc G. Fournier 1997-09-26 08:22:21 +00:00
parent c5d49902fb
commit 99048aca00
2 changed files with 241 additions and 0 deletions

View File

@ -0,0 +1,89 @@
#-------------------------------------------------------------------------
#
# Makefile
# Makefile for Java JDBC interface
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/Makefile,v 1.1 1997/09/26 08:22:21 scrappy Exp $
#
#-------------------------------------------------------------------------
# These are commented out, but would be included in the postgresql source
FIND = find
JAR = jar
JAVA = java
JAVAC = javac
JAVADOC = javadoc
RM = rm -f
# This defines how to compile a java class
.java.class:
$(JAVAC) $<
.SUFFIXES: .class .java
.PHONY: all clean doc
all: postgresql.jar
doc:
$(JAVADOC) -public postgresql
OBJS= postgresql/CallableStatement.class \
postgresql/Connection.class \
postgresql/DatabaseMetaData.class \
postgresql/Driver.class \
postgresql/Field.class \
postgresql/PG_Object.class \
postgresql/PG_Stream.class \
postgresql/PGbox.class \
postgresql/PGcircle.class \
postgresql/PGlobj.class \
postgresql/PGlseg.class \
postgresql/PGpath.class \
postgresql/PGpoint.class \
postgresql/PGpolygon.class \
postgresql/PGtokenizer.class \
postgresql/PreparedStatement.class \
postgresql/ResultSet.class \
postgresql/ResultSetMetaData.class \
postgresql/Statement.class
postgresql.jar: $(OBJS)
$(JAR) -c0vf $@ $^
# This rule removes any temporary and compiled files from the source tree.
clean:
$(FIND) . -name "*~" -exec $(RM) {} \;
$(FIND) . -name "*.class" -exec $(RM) {} \;
$(RM) postgres.jar
#######################################################################
# This helps make workout what classes are from what source files
#
# Java is unlike C in that one source file can generate several
# _Different_ file names
#
postgresql/CallableStatement.class: postgresql/CallableStatement.java
postgresql/Connection.class: postgresql/Connection.java
postgresql/DatabaseMetaData.class: postgresql/DatabaseMetaData.java
postgresql/Driver.class: postgresql/Driver.java
postgresql/Field.class: postgresql/Field.java
postgresql/PG_Object.class: postgresql/PG_Object.java
postgresql/PG_Stream.class: postgresql/PG_Stream.java
postgresql/PGbox.class: postgresql/PGbox.java
postgresql/PGcircle.class: postgresql/PGcircle.java
postgresql/PGlobj.class: postgresql/PGlobj.java
postgresql/PGlseg.class: postgresql/PGlseg.java
postgresql/PGpath.class: postgresql/PGpath.java
postgresql/PGpoint.class: postgresql/PGpoint.java
postgresql/PGpolygon.class: postgresql/PGpolygon.java
postgresql/PGtokenizer.class: postgresql/PGtokenizer.java
postgresql/PreparedStatement.class: postgresql/PreparedStatement.java
postgresql/ResultSet.class: postgresql/ResultSet.java
postgresql/ResultSetMetaData.class: postgresql/ResultSetMetaData.java
postgresql/Statement.class: postgresql/Statement.java

152
src/interfaces/jdbc/README Normal file
View File

@ -0,0 +1,152 @@
This is a simple readme describing how to compile and use the jdbc driver.
This isn't a guide on how to use JDBC - for that refer to Javasoft's web site:
http://www.javasoft.com
or the JDBC mailing list:
jdbc@java.blackdown.org
http://www.blackdown.org
---------------------------------------------------------------------------
COMPILING
To compile the driver, simply use make in the src/interfaces/jdbc directory.
This will compile the driver, and build a .jar file (Java ARchive).
REMEMBER: once you have compiled the driver, it will work on ALL platforms
that support the JDK 1.1 api or later.
That means you don't have to compile it on every platform. Believe me, I
still hear from people who ask me "I've compiled it ok under Solaris, but it
won't compile under Linux" - there's no difference.
PS: When you run make, don't worry if you see just one or two calls to javac.
If, while compiling a class, javac needs another class that's not compiled,
it will compile it automatically. This reduces the numer of calls to javac
that make has to do.
---------------------------------------------------------------------------
INSTALLING THE DRIVER
To install the driver, the .class files have to be in the classpath. This can be
done in two ways:
1: create a directory "postgresql" (and it must be called this) in the current
directory (or a directory in the class path), and copy all .class files
into it.
2: copy the postgres.jar file into a directory, and add it to the classpath.
ie: under LINUX/SOLARIS (the example here is my linux box):
export CLASSPATH=.:/usr/local/lib/postgresql.jar:/usr/local/jdk1.1.1/lib/classes.zip
note: in java, .zip and .jar files hold collections of classes.
---------------------------------------------------------------------------
USING THE DRIVER
To use the driver, you must introduce it to JDBC. Again, there's two ways
of doing this:
1: Hardcoded.
This method hardcodes your driver into your application/applet. You
introduce the driver using the following snippet of code:
try {
Class.forName("postgresql.Driver");
} catch(Exception e) {
// your error handling code goes here
}
Remember, this method restricts your code to just the postgresql database.
2: Parameters
This method specifies the driver from the command line. When running the
application, you specify the driver using the option:
-Djdbc.drivers=postgresql.Driver
eg: This is an example of running one of my other projects with the driver:
java -Djdbc.drivers=postgresql.Driver finder.finder
note: This method only works with Applications (not for Applets).
However, the application is not tied to one driver, so if you needed
to switch databases (why I don't know ;-) ), you don't need to
recompile the application (as long as you havent hardcoded the url's).
---------------------------------------------------------------------------
JDBC URL syntax
The driver recognises JDBC URL's of the form:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
Also, you can supply both username and passwords as arguments, by appending
them to the URL. eg:
jdbc:postgresql:database?user=me
jdbc:postgresql:database?user=me&password=mypass
---------------------------------------------------------------------------
That's the basics related to this driver. You'll need to read the JDBC Docs
on how to use it.
POSTGRESQL SPECIFICS
--------------------
JDBC supports database specific data types using the getObject() call. The
following types have their own Java equivalents supplied by the driver:
box, circle, lseg, path, point, polygon
When using the getObject() method on a resultset, it returns a PG_Object,
which holds the postgres type, and its value. This object also supports
methods to retrive these types.
Eg: column 3 contains a point, and rs is the ResultSet:
PG_Object o = (PG_Object)rs.getObject(3);
PGpoint p = o.getPoint();
System.out.println("point returned x="+p.x+", y="+p.y);
Also, when using these classes, their toString() methods return the correct
syntax for writing these to the database.
TODO
----
Currently only host authentication is supported. Password authentication
will be in there in a few days.
Incorporating more features from the other driver (esp. in the MetaData's)
Large Object support will also go in there, although it may not be done as
pure JDBC, but as an extra API.
Producing some documentation with javadoc - not all of the sources have them
yet.
---------------------------------------------------------------------------
Peter T Mount, August 30 1997
home email: pmount@maidast.demon.co.uk http://www.demon.co.uk/finder
work email: peter@maidstone.gov.uk http://www.maidstone.gov.uk
Adrian Hall
email: adrian@hottub.org