how to get the query from the Statement object

S

Steve

Is there a way to get the query from the Statement object? I couldn't
find the API on that purpose.

Please help. Thanks.
 
R

RedGrittyBrick

Steve said:
Is there a way to get the query from the Statement object? I couldn't
find the API on that purpose.

Generally if it's not in the API docs then there isn't.

Presumably you mean Interface java.sql.Statement and the String passed
to it's executeQuery method.

Perhaps you could write your own class that implements Statement,
encapsulates the Statement obtained by Connection.createStatement and
which keeps track of the most recent query?

Connection connection = DriverManager.getConnection( ... );
Statement statement = connection.createStatement();
MyStatement myStatement = new MyStatement(statement);
String sql = "select count(*) from aristocrat";
ResultSet rs = myStatement.executeQuery(sql);
...
String lastUsedQuery = myStatement.getLastQuery();
if (lastUsedQuery.equals(sql))
System.out.println("I'm astonished!");

This makes no sense to me, if it doesn't to you either, I suggest you
explain a bit about the background :)
 
L

Lew

RedGrittyBrick said:
Generally if it's not in the API docs then there isn't.

Presumably you mean Interface java.sql.Statement and the String passed
to it's executeQuery method.

Perhaps you could write your own class that implements Statement,
encapsulates the Statement obtained by Connection.createStatement and
which keeps track of the most recent query?

Connection connection = DriverManager.getConnection( ... );
Statement statement = connection.createStatement();
MyStatement myStatement = new MyStatement(statement);
String sql = "select count(*) from aristocrat";
ResultSet rs = myStatement.executeQuery(sql);
...
String lastUsedQuery = myStatement.getLastQuery();
if (lastUsedQuery.equals(sql))
System.out.println("I'm astonished!");

This makes no sense to me, if it doesn't to you either, I suggest you
explain a bit about the background :)

It's kind of a strange question, because Statements (as opposed to
PreparedStatements) live *very* close to the Strings that represent their
queries. There is no "setSql()" method - you directly
"execute{,Query,Update}( String sql )", then you're straight into results.

So the String is right there with the Statement, right at the point where you
invoke it. You just use that String again, if you need it.

What is the scenario that necessitates retrieving the String at a separate
place or time?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,008
Latest member
Rahul737

Latest Threads

Top