import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;public class test { public static void main(String[] args) {
  //String url="jdbc:odbc:GoodsSupply";
  String url="jdbc:odbc:test";
  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("com.microsoft.jdbc.sqlserver.SQLServerDriver");  //加载驱动
   }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,"sa",""); //使用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;
    //command="select * 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");
  }
 }
}
编译通过,但运行时
can not load jdbc-odbc bridge driver
ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
SQLException:
Message:No suitable driver我的classpath是这样配置的:
c:\jdk\lib\tools.jar;c:jdk\jre\lib\rt.jar;c:\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;c:\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;c:\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;

解决方案 »

  1.   

    楼主混淆了jdbc驱动和jdbc-odbc桥接的区别,两者都可以连接数据库。
    如果想用前者要想你的程序那样下载相应的jdbc驱动,这时url也要用相应产品的url,而不是你那样String url="jdbc:odbc:test";
    ,每种数据库都不一样,具体是什么我也忘了,去baidu一下就行了。
    如果想用后者,可以不用下载相应驱动,driverName用sun.jdbc.odbc.JdbcOdbcDriver,url用你原来的格式,这时你要去数据源那里配置odbc数据源。
    推荐用前者,速度会快一些,省掉桥接的时间。
      

  2.   

    我没有用桥
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
    我改的别人的程序
      

  3.   

    url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Test";