Bug with Multiple Result Sets?
- From: Wes Clark <WesClark@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Sun, 29 Jan 2006 16:13:27 -0800
I am rying to retrieve the data from the DBCC SHOW_STATISTICS command. I am
getting different behavior between 2000 and 2005. I run the following
program, and you can see the differences. I am getting three results sets
using the 2000 driver against the 2000 database. I am only getting one
result set using the 2005 driver against the 2005 database.
/**
* Created by IntelliJ IDEA.
* User: wclark
* Date: Jan 29, 2006
* Time: 3:39:41 PM
* To change this template use File | Settings | File Templates.
*/
import java.sql.Connection;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.ResultSet;
/**
* Class description...
*
* @author wclark
*/
public class MultipleResultSets {
public MultipleResultSets() {
}
public static void main(String[] args) {
try {
System.out.println("Class being loaded
com.microsoft.sqlserver.jdbc.SQLServerDriver");
java.lang.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url =
"jdbc:sqlserver://ALKOR:1434;selectMethod=direct;databaseName=AdventureWorks;user=sa;password=456";
System.out.println("URL being used: " + url);
Connection conn = java.sql.DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
stmt.execute("dbcc show_statistics([Person.Address],
PK_Address_AddressID)");
int updateCount = stmt.getUpdateCount();
System.out.println("Update count is " + updateCount);
ResultSet rs = stmt.getResultSet();
System.out.println("Is first result set null? " + (rs == null ? "Yes,
null" : "No, not null"));
boolean moreResults = stmt.getMoreResults();
System.out.println("stmt.getMoreResults() returns " + moreResults);
if (moreResults) {
rs = stmt.getResultSet();
System.out.println("Is second result set null? " + (rs == null ?
"Yes, null" : "No, not null"));
moreResults = stmt.getMoreResults();
System.out.println("stmt.getMoreResults() returns " + moreResults);
if (moreResults) {
rs = stmt.getResultSet();
System.out.println("Is third result set null? " + (rs == null ?
"Yes, null" : "No, not null"));
moreResults = stmt.getMoreResults();
System.out.println("stmt.getMoreResults() returns " + moreResults);
}
}
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File |
Settings | File Templates.
} catch (SQLException e) {
e.printStackTrace(); //To change body of catch statement use File |
Settings | File Templates.
}
try {
System.out.println("Class being loaded
com.microsoft.jdbc.sqlserver.SQLServerDriver");
java.lang.Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url =
"jdbc:microsoft:sqlserver://ITH:1433;databaseName=pubs;user=sa;password=123;";
System.out.println("URL being used: " + url);
Connection conn = java.sql.DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
stmt.execute("dbcc show_statistics(authors, aunmind)");
int updateCount = stmt.getUpdateCount();
System.out.println("Update count is " + updateCount);
ResultSet rs = stmt.getResultSet();
System.out.println("Is first result set null? " + (rs == null ? "Yes,
null" : "No, not null"));
boolean moreResults = stmt.getMoreResults();
System.out.println("stmt.getMoreResults() returns " + moreResults);
if (moreResults) {
rs = stmt.getResultSet();
System.out.println("Is second result set null? " + (rs == null ?
"Yes, null" : "No, not null"));
moreResults = stmt.getMoreResults();
System.out.println("stmt.getMoreResults() returns " + moreResults);
if (moreResults) {
rs = stmt.getResultSet();
System.out.println("Is third result set null? " + (rs == null ?
"Yes, null" : "No, not null"));
moreResults = stmt.getMoreResults();
System.out.println("stmt.getMoreResults() returns " + moreResults);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File |
Settings | File Templates.
} catch (SQLException e) {
e.printStackTrace(); //To change body of catch statement use File |
Settings | File Templates.
}
}
}
Results:
C:\j2sdk1.4.2_05\bin\java -Didea.launcher.port=7537
"-Didea.launcher.bin.path=C:\Program Files\JetBrains\IntelliJ IDEA 5.0\bin"
-Dfile.encoding=windows-1252 -classpath
"C:\j2sdk1.4.2_05\jre\lib\charsets.jar;C:\j2sdk1.4.2_05\jre\lib\jce.jar;C:\j2sdk1.4.2_05\jre\lib\jsse.jar;C:\j2sdk1.4.2_05\jre\lib\plugin.jar;C:\j2sdk1.4.2_05\jre\lib\rt.jar;C:\j2sdk1.4.2_05\jre\lib\sunrsasign.jar;C:\j2sdk1.4.2_05\jre\lib\ext\dnsns.jar;C:\j2sdk1.4.2_05\jre\lib\ext\ldapsec.jar;C:\j2sdk1.4.2_05\jre\lib\ext\localedata.jar;C:\j2sdk1.4.2_05\jre\lib\ext\sunjce_provider.jar;C:\j2sdk1.4.2_05\lib\tools.jar;C:\Documents
and
Settings\wclark\IdeaProjects\WesAdHoc\classes;C:\dev\lib\sqljdbc.jar;C:\dev\lib\msbase.jar;C:\dev\lib\msutil.jar;C:\dev\lib\mssqlserver.jar;C:\Program
Files\New
Atlanta\JTurbo30\lib\JTurbo.jar;C:\Java\jTDS1.2\jtds-1.2.jar;C:\Program
Files\JetBrains\IntelliJ IDEA 5.0\lib\idea_rt.jar"
com.intellij.rt.execution.application.AppMain MultipleResultSets
Class being loaded com.microsoft.sqlserver.jdbc.SQLServerDriver
URL being used:
jdbc:sqlserver://ALKOR:1434;selectMethod=direct;databaseName=AdventureWorks;user=sa;password=456
Update count is -1
Is first result set null? No, not null
stmt.getMoreResults() returns false
Class being loaded com.microsoft.jdbc.sqlserver.SQLServerDriver
URL being used:
jdbc:microsoft:sqlserver://ITH:1433;databaseName=pubs;user=sa;password=123;
Update count is -1
Is first result set null? No, not null
stmt.getMoreResults() returns true
Is second result set null? No, not null
stmt.getMoreResults() returns true
Is third result set null? No, not null
stmt.getMoreResults() returns false
Process finished with exit code 0
.
- Follow-Ups:
- Re: Bug with Multiple Result Sets?
- From: Joe Weinstein
- Re: Bug with Multiple Result Sets?
- Prev by Date: Re: execute() vs executeUpdate() on a prepared statement
- Next by Date: Re: Bug with Multiple Result Sets?
- Previous by thread: Re: execute() vs executeUpdate() on a prepared statement
- Next by thread: Re: Bug with Multiple Result Sets?
- Index(es):
Relevant Pages
|
Loading