java连接sql server2005,驱动加载成功,数据库连接失败,应该怎么办?

我的妈呀,搞了我三四天,各种各样的方法都试了,降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“”以启用“都改为”是“,不过还是没用。
实在是没有办法了,请大神帮忙指导一下。

2个回答

你为什么要阻止错误日志的打印而改成你自己的错误打印呢?一般的话,看问题日志就知道是什么问题了,而且你这里抛异常,用的全是Exception,那么Exception的子类的用途何在呢?开发软件的过程中,越接近问题描述的异常,越方便解决问题,你现在弄到一个最高级的异常,要怎么定位具体的问题呢?

cjsxsw
cjsxsw 问题已经解决了,感谢你的回复
一年多之前 回复
cjsxsw
cjsxsw 是否是驱动程序不对,版本不对或者安装不对
一年多之前 回复
cjsxsw
cjsxsw 出现了这个异常 java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度
一年多之前 回复
cjsxsw
cjsxsw 我改了这个try{ ct=DriverManager.getConnection("jdbc:odbc:sqlserver", "sa", "2010cjs"); System.out.println("数据库连接成功!"); }catch(SQLException e){ System.out.println(e); }
一年多之前 回复
cjsxsw
cjsxsw 感谢回复。
一年多之前 回复

加载驱动成功!
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3907)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5698)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:354)
at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(JdbcOdbcConnection.java:1503)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:381)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at L10_1.main(L10_1.java:15)
具体错误

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问