aspose file tools*
The moose likes JDBC and the fly likes Getting name of CallableStatement before execute? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » JDBC
Bookmark "Getting name of CallableStatement before execute?" Watch "Getting name of CallableStatement before execute?" New topic
Author

Getting name of CallableStatement before execute?

David Yutzy
tumbleweed and gunslinger
Ranch Hand

Joined: Jun 29, 2001
Posts: 192
Hello,

Trying to figure out a way to retrieve the value passed to prepareStatement() and the parameters thereof, but I do not see an immediate way to do this within the Statement, PreparedStatement, or CallableStatement objects.

Any ideas?

Thanks!
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30967
    
158

David,
What are you trying to do with the values? The database driver has a way of getting them, but an application developer normally wouldn't. You are passing in the values, so you have them at some point.


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
David Yutzy
tumbleweed and gunslinger
Ranch Hand

Joined: Jun 29, 2001
Posts: 192
Well...

While debugging some pesky bugs, we're trying to track database activity across multiple users and want to log all Stored Procedure calls, by user, and the parameters passed to SQL Server.

Yes, we're using SQL Profiler but the commands aren't sequential by user and sorting it all out is difficult.

What we come up with is to place a call in our central DB code to gather the CallableStatement calls and the passed parameters BEFORE they get to the DB.

We're not sure if it's a driver thing, a JNDI thing, a SQL Server thing, or what.

Also, certain users seem to have unusual behavior versus other users so it could be a permission or security thing as well.
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30967
    
158

David,
I don't think it is possible to log at that level. The only places that I can think of to log that info:

1) When you set the string for the prepared statement
2) From a DAO wrapper for the prepared statement
3) From the callable statement itself
David Yutzy
tumbleweed and gunslinger
Ranch Hand

Joined: Jun 29, 2001
Posts: 192
I found a way to get what I need. We were having issues with the Microsoft SQL Server driver so I tried out the JTDS Open Source driver instead and found a CallableStatement_Base class in the driver source. By casting a regular CallableStatement (passed into my DAO), I was able to get the name of the Procedure and the parameters passed, all in a generic way.

I can post some code if anyone is interested.
[ July 07, 2004: Message edited by: David Yutzy ]
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30967
    
158

Cool! Good to know a way of doing it.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Getting name of CallableStatement before execute?