我按照以下的办法连接数据库,为什么报错误呢,错误是:(连接的数据库:jdbc:odbc:GoodsSupply驱动程序:JDBC-ODBC Bridge (SQLSRV32.DLL)输入表名info
输入列名(为空时程序结束):name 
SQLException:Message:[Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'info' 无效。)
我事先也在数据库中建立库Test和表了,也按照他的设置了,为什么会有错误呢 
首先打开控制面板的管理工具,打开数据源(ODBC),在用户DSN里面添加数据源(即你要连接的数据库的名字),在这里假定连接SQL 
            SERVER 
            2000的GoodsSupply数据库。名称填写你要连接的数据库的名称(GoodsSupply),然后逐步设置,如果选用了使用SQL-SERVER密码认证的话,就要输入相应的用户名及密码连接到数据库。一路下一步设置完成。 
            在JAVA里面编写程序进行测试,在这里我的程序是让用户输入任意的表名与与列名,把该列的所有数据输出。源代码如下:             import java.io.BufferedReader; 
            import java.io.InputStreamReader; 
            import java.sql.*;             public class ODBCBridge {             public static void main(String[] args) { 
            String url="jdbc:odbc:GoodsSupply"; 
            Statement sm=null; 
            String command=null; 
            ResultSet rs=null; 
            String tableName=null; 
            String cName=null; 
            String result=null; 
            BufferedReader input=new BufferedReader(new 
            InputStreamReader(System.in)); 
            try { 
            try { 
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动 
            }catch(ClassNotFoundException e){ 
            System.out.println("Can not load Jdbc-Odbc Bridge Driver"); 
            System.err.print("ClassNotFoundException:"); 
            System.err.println(e.getMessage()); 
            } 
            Connection con=DriverManager.getConnection(url,"USER","PASSWORD"); 
            //使用SQL-SERVER2000认证 
            DatabaseMetaData dmd=con.getMetaData(); //DMD为连接的相应情况 
            System.out.println("连接的数据库:"+dmd.getURL()); 
            System.out.println("驱动程序:"+dmd.getDriverName()); 
            sm=con.createStatement(); 
            System.out.println("输入表名"); 
            tableName=input.readLine(); 
            while(true) { 
            System.out.println("输入列名(为空时程序结束):"); 
            cName=input.readLine(); 
            if(cName.equalsIgnoreCase("")) 
            break; 
            command="select "+cName+" from "+tableName; 
            rs=sm.executeQuery(command); //执行查询 
            if(!rs.next()) 
            System.out.println("表名或列名输入有误"); 
            else { 
            System.out.println("查询结果为:"); 
            do 
            { 
            result=rs.getString(cName); 
            //数据库语言设置为中文,不用转换编码 
            //result=new String(result.getBytes("ISO-8859-1"),"GB2312"); 
            System.out.println(result); 
            }while(rs.next()); 
            } 
            } 
            }catch(SQLException ex) { 
            System.out.println("SQLException:"); 
            while(ex!=null) { 
            System.out.println("Message:"+ex.getMessage()); 
            ex=ex.getNextException(); 
            } 
            }catch(Exception e) { 
            System.out.println("IOException"); 
            } 
            } 
            } 

解决方案 »

  1.   

    你的数据源的名字和数据的名字是不是都是GoodsSupply
      

  2.   

    对象名 'info' 无效,也就是找不到这张表,你有没有连错数据库?或是数据库中没有这张表
      

  3.   

    数据源的名字和数据的名字都是GoodsSupply啊!
    我应该没有连错表!(那位好心人帮忙,连下数据库,我先谢谢了!*_*)
      

  4.   

    jdbc-odbc桥不用安装sqlserver sp3,新建数据源最后一步有个测试数据源,你测试下有没有建立成功,用户名和密码对不对,去查询分析器里面查下试试
      

  5.   

    你不要用jdbc-odbc桥连接数据库了,上午因为这个事情,我帮助别人整了两个小时也没有弄好。
    后来还是用直接连接数据库的方法弄的。
    真是郁闷死了。。
    如果你要是还不会可以联系我[email protected]