JAVA连接SQL SERVER数据库的怪问题
yfd 2004-01-06 10:13:59 我用JAVA通过两种方法连接SQL SERVER数据库,运行同样的SQL居然得到两个不同的结果集:
第一个方法:用SQL Server 2000 JDBC驱动程序连接,运行带DISTINCT的SQL,发现DISTINCT没有起作用,我对指定的字段取DISTINCT之后,本来应该输出1000多条记录的,但是却输出了3000多条记录,完全忽略了DISTINCT关键字。
第二个方法:通过ODBC-JDBC桥接驱动,一切正常,和通过SQL SERVER的查询分析器连接时得出的结果是完全一样的。
完整的程序如下:
import java.sql.*;
public class Main
{
public static void main(String args[]) {
try {
//采用SQL Server 2000 JDBC驱动程序
// Class
// .forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
// .newInstance();
// String url =
// "jdbc:microsoft:sqlserver://127.0.0.1:1144;DatabaseName=Test";
// String user = "sa";
// String password = "123";
// Connection conn = DriverManager.getConnection(url, user, password);
//采用ODBC-JDBC桥接驱动
Class
.forName("sun.jdbc.odbc.JdbcOdbcDriver")
.newInstance();
String url =
"jdbc:odbc:JSql";
String user = "sa";
String password = "123";
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt =
conn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = "select distinct col003 from dy_tmp_bill_user";
ResultSet rs = stmt.executeQuery(sql);
int cnt=0;
while (rs.next()) {
cnt++;
System.out.print(cnt);
System.out.print(" ");
System.out.println(rs.getString(1));
}
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}