我的妈呀,搞了我三四天,各种各样的方法都试了,降jdk,升SQLserver,各种各样的设置改动,全都没用,甚至我都想动系统版本了。
一直是出现这个异常:这个异常 java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度。
简直要绝望了,偶然看到了jdk1.7 JDBC连接SQL Server2008,试试看吧,第一步我已经做了,从第二步开始,将驱动下载复制到各自位置,然后运行测试程序,哈,还是有异常,不过异常变了,变成:Exception in thread "main" java.lang.UnsupportedClassVersionError: L10_1 : Unsupported major.minor version 51.0,变了好啊,变了就说明有效果啊,再查这个异常,感谢这个帖子出现 java.lang.UnsupportedClassVersionError 错误的原因及解决方法和运行java程序的时候出现Exception in thread "main" java.lang.UnsupportedClassVersionError:
,综合这两个帖子,将java的编译环境jdk和jre更换到相同的1.7版本,啊,奇迹出现了,终于得到想要的结果了
感谢上面提及的帖子的作者,让我在学习中得到帮助,及希望我这个问题能帮助到遇到这种问题的网友们。
电脑系统是win7 64位家庭旗舰版的
在sql server2005中建立名为shuihu的库,写了renwu表,在数据源(ODBC)里SQL Server ODBC 数据源测试 中是测试成功的,但在myeclipse里运行简单的测试程序就出错了
import java.sql.*;
public class L10_1 {
public static void main(String[] args){
Connection ct=null;
Statement sm=null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("加载驱动成功!");
}catch(Exception e){
e.printStackTrace();
}
try{
ct=DriverManager.getConnection("jdbc:odbc:sqlserver", "sa", "2010cjs");
System.out.println("数据库连接成功!");
}catch(SQLException e){
e.printStackTrace();
}
try{
sm=ct.createStatement();
ResultSet rs=sm.executeQuery("select * from bumen");
while(rs.next())
{
int bianhao=rs.getInt(1);
String mingcheng=rs.getString(2);
String didian=rs.getString(3);
System.out.println(bianhao+" "+mingcheng+" "+didian);
}
}catch(Exception e){}
finally{
try{
if(sm!=null){
sm.close();
}
if(ct!=null){
ct.close();
}
}catch(Exception e2){}
}
}
}
在网上查了两天了,各种方法都试了,也没能找出问题。
先是jar7以后的不提供ODBC桥,而原先的是jar11,把jar11卸载了,换上jar7,但是没用。
将“sql server configuration manager”中“SQL Server 2005网络配置”下的“SQLSERVER 的协议”里四个协议都启用,其中”TCP/IP“属性里的”IP地址“里的”IPAII“端口改为1433,其他”IP“”以启用“都改为”是“,不过还是没用。
实在是没有办法了,请大神帮忙指导一下。