Bug with Multiple Result Sets?



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

.



Relevant Pages

  • Re: Bug with Multiple Result Sets?
    ... To change this template use File | Settings | File Templates. ... boolean moreResults = stmt.getMoreResults; ... //To change body of catch statement use File | Settings | File Templates. ...
    (microsoft.public.sqlserver.jdbcdriver)
  • RE: Using Unicode data Through a DataSource
    ... resultsEndOrUpdateCount =!stmt.getMoreResults) ... //To change body of catch statement use File | Settings | File Templates. ...
    (microsoft.public.sqlserver.jdbcdriver)

Loading