Re: Mining SQLException for info

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Ian Pilcher <i(dot)pilcher(at)comcast(dot)net>
Cc: "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: Mining SQLException for info
Date: 2004-10-14 23:08:31
Message-ID: 1097795310.7976.523.camel@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Well if you want to skip a number of steps in this process have a look
at tapestry, and hibernate.

tapestry is a web framework
hibernate is a persistence layer

Neither of which will answer your question directly, however tapestry
does a good job at 1, and 3 below.

Dave
On Thu, 2004-10-14 at 19:00, Ian Pilcher wrote:
> I am using Tomcat and PostgreSQL to create a browser-based "jukebox" for
> my music collection. Actually, it's more accurate to say that I'm using
> the jukebox project as a vehicle to learn Java, JDBC, servlets, JSPs,
> SQL, etc. Either way, at this rate I should something quite usable in
> about ten years. :-)
>
> I'm currently wrestling with the problem of data integrity, and what
> layer of the application should enforce it. I've identified three
> possible high-level approaches:
>
> 1) Data integrity is enforced at the application (servlet) level
> only. The database accepts whatever the application gives it.
>
> 2) Data integrity is enforced only at the database level. The
> application attempts to put whatever the user inputs into the
> database.
>
> 3) All data integrity checks are performed at both levels.
>
> Ignore, for a moment, the fact that no application will ever fit
> completely into one of these patterns.
>
> Although option #1 may look silly, especially on a RDBMS-related list,
> it does have one important benefit. The application can provide far
> better feedback to the user if it has detailed information about what
> the exact data integrity problem is. Nevertheless, I've ruled it out,
> because there's really no point in using an RDBMS (at least not Post-
> greSQL) if you're not going to use it's data integrity features.
>
> Option #3 is somewhat tempting. The application will be able to
> provide useful feedback to users about data problems, and the database
> won't accept problematic data. Any data integrity violation at the
> database level is, by definition, a bug in the application. Keeping
> the two sets of data integrity rules in sync, however, will inevitably
> prove problematic. It's also simply inelegant to do everything twice.
>
> Which brings me to option #2, the option I've chosen. Given my desire
> to provide good feedback, I want to squeeze as much information as
> possible out of any SQLException that comes back -- at least those
> related to integrity violations (23xxx) and exceptions in TRIGGER
> functions.
>
> The only technique I can come up with is to name all of my constraints
> and, based on the code returned by getSQLState parse the String returned
> by getMessage. Uugh!
>
> Is there a better way that I haven't thought of?
>
> If there isn't, are there anything I can do to make the message parsing
> more robust -- across PostgreSQL version changes and different locales,
> for example?
>
> Thanks!
--
Dave Cramer
519 939 0336
ICQ # 14675561
www.postgresintl.com

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Jair da Silva Ferreira Jr 2004-10-14 23:33:37 Re: problem with dates when using a java calendar object with
Previous Message Ian Pilcher 2004-10-14 23:00:11 Mining SQLException for info