F
fanwei
Unregistered / Unconfirmed
GUEST, unregistred user!
各位,偶碰上个怪问题
偶的程序以前是通过JDBC-ODBC连接SQL SERVER的,用起来挺好。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"
String dburl="jdbcdbcSI";
后来要正是发布了,因效率问题改用JDBC直连。
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver".newInstance();
String dburl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=PSI";
结果在SQL 中有用到COUNT这个函数的就会报错
原句如下:
select count(pid) as pid from table1
要是用第一种方法连就没问题,第二种的话就报下面的错
javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]列 'table1.id' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
后来我又实验了一下发现只要是聚合函数都存在这个问题i.e count/avg/sum....
真是弄得我不理解,请问有没有朋友碰到过这个问题?
环境:SQL SERVER JDBC是安装过jdbc sp1的、SQL SERVER标准版+sp3
tomcat 5.0.28,jdk1.5_sp3,什么classpath , tomcat_home ,java_home都肯定正确,也把MS SQL SERVER JDBC里的三个JAR拷贝到应该存在的地方了(肯定正确,因为JDBC-ODBC连接是正常的,而且不涉及聚合函数的SQL 用JDBC 直连也没问题)
这死问题困扰偶好久,估计是什么地方不合适?望朋友们多指教,但是请千万别告诉偶改用ORACLE /MYSQL之类的了,不可能对DBMS下手了。
偶的程序以前是通过JDBC-ODBC连接SQL SERVER的,用起来挺好。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"
String dburl="jdbcdbcSI";
后来要正是发布了,因效率问题改用JDBC直连。
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver".newInstance();
String dburl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=PSI";
结果在SQL 中有用到COUNT这个函数的就会报错
原句如下:
select count(pid) as pid from table1
要是用第一种方法连就没问题,第二种的话就报下面的错
javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]列 'table1.id' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
后来我又实验了一下发现只要是聚合函数都存在这个问题i.e count/avg/sum....
真是弄得我不理解,请问有没有朋友碰到过这个问题?
环境:SQL SERVER JDBC是安装过jdbc sp1的、SQL SERVER标准版+sp3
tomcat 5.0.28,jdk1.5_sp3,什么classpath , tomcat_home ,java_home都肯定正确,也把MS SQL SERVER JDBC里的三个JAR拷贝到应该存在的地方了(肯定正确,因为JDBC-ODBC连接是正常的,而且不涉及聚合函数的SQL 用JDBC 直连也没问题)
这死问题困扰偶好久,估计是什么地方不合适?望朋友们多指教,但是请千万别告诉偶改用ORACLE /MYSQL之类的了,不可能对DBMS下手了。