From 99048aca00aa317ae0bac2c35bea7a8bdea1f204 Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Fri, 26 Sep 1997 08:22:21 +0000 Subject: [PATCH] Get these two files finally committed for Peter...sorry for delay :( --- src/interfaces/jdbc/Makefile | 89 ++++++++++++++++++++ src/interfaces/jdbc/README | 152 +++++++++++++++++++++++++++++++++++ 2 files changed, 241 insertions(+) create mode 100644 src/interfaces/jdbc/Makefile create mode 100644 src/interfaces/jdbc/README diff --git a/src/interfaces/jdbc/Makefile b/src/interfaces/jdbc/Makefile new file mode 100644 index 0000000000..6902639f2d --- /dev/null +++ b/src/interfaces/jdbc/Makefile @@ -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 + + + + diff --git a/src/interfaces/jdbc/README b/src/interfaces/jdbc/README new file mode 100644 index 0000000000..222f8b9adb --- /dev/null +++ b/src/interfaces/jdbc/README @@ -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 -- 2.40.0