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());
}

}
}
...全文
28 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger_wkh52741 2004-01-09
  • 打赏
  • 举报
回复
Distinct 关键字 表示要求独一无二的.你肯定你只要针对一个字段
chrislois 2004-01-09
  • 打赏
  • 举报
回复
UP
yfd 2004-01-06
  • 打赏
  • 举报
回复
to Yoinn(孤标傲视皆谁引,一样开花为底迟):
用ODBC:JDBC连是不现实的,特别是在一些比较大的应用中,再说我的应用可能要放到LINUX下面去。

微软的驱动还有没有别的问题呀,才用就发现这么大个bug,我怎么敢用,网上就有人说这个驱动经常出现莫名其妙的问题,还有没有有别的组织开发的驱动,效果比较好一点的呀。
yfd 2004-01-06
  • 打赏
  • 举报
回复
to:totodo(土豆仙)
我确实只distinct了一个字段,如果distinct 多个字段,sql server会报错的,源码一字未改就贴上来了。

oracle中可以distinct多个字段,sql server中就不行了。
javaprogramlover 2004-01-06
  • 打赏
  • 举报
回复
有这个可能!!
icebound1 2004-01-06
  • 打赏
  • 举报
回复
mark
Leemaasn 2004-01-06
  • 打赏
  • 举报
回复
是啊。。

我也觉得能不用Distinct还是不用的好啊。
^@^
hanjinghua 2004-01-06
  • 打赏
  • 举报
回复
带有distinct关键字的查询结果放在集合中是有可能出错的,因为其查询
结果的显示和实际的值不是一样的,可以尝试不用集合的方法检测一下
atq9 2004-01-06
  • 打赏
  • 举报
回复
关注
Yoinn 2004-01-06
  • 打赏
  • 举报
回复
用jdbc:odbc连
老土豆T 2004-01-06
  • 打赏
  • 举报
回复
你确实只 distinct 了一个字段?。。

distinct 多个字段是无效的。。

一般情况下,应不会出现你那种情况。:)
bobgu 2004-01-06
  • 打赏
  • 举报
回复
试试看把查询语句做成view,让后调用view。
turbocrm 2004-01-06
  • 打赏
  • 举报
回复
跪求大家,帮我看看这个问题,谢谢!!!!!!!!!!!!!

http://expert.csdn.net/Expert/topic/2633/2633574.xml?temp=.6377375
bluesky35 2004-01-06
  • 打赏
  • 举报
回复
你只distinct了一个字段?直接用驱动和用ODBC拿出来的数据有时是有一些不一样的!
turbocrm 2004-01-06
  • 打赏
  • 举报
回复
跪求大家,帮我看看这个问题,谢谢!!!!!!!!!!!!!

http://expert.csdn.net/Expert/topic/2633/2633574.xml?temp=.6377375

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧