这里面最可能出错的地方应该是stmt=conn.createStatement()这一行,不妨在这行前面打印一下conn,看看是不是null。
如果不是这一行,可以在代码中多加几处打印语句,先看程序执行到哪里了,逐步缩小范围,直到找到出现问题的那一行

解决方案 »

  1.   

    有处理SQLException异常吗?
    try{
       Class.forName(".....
       conn= DriverManager.getConnection(url,user,password); 
    stmt=conn.createStatement();
    //ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
    String sql="select * from web_repository_class"; 
    ResultSet rs=stmt.executeQuery(sql); 
    }catch(Exception e){
         //例外处理
    }
      

  2.   

    class_name和class_no是不是和表里面的命名一样?
      

  3.   

    异常已经进行了处理,这个信息好像是输出的一场信息,我用自己的一场代码执行则此信息被覆盖了
    catch(SQLException sqle)
    {
    out.println(sqle.getMessage()+"=sqle");
    }
    catch(Exception e)
    {
    out.println(e.getMessage()+"=e");
    }
    finally
    {
     out.print("sdsdsdsdsdsds");
    try
    {
    if(conn!= null)
    {
    conn.close();
    }
    if(stmt!=null);
    {
    stmt.close(); 

    }
    catch(SQLException sqle)
    {
    out.println(sqle.getMessage()+"=finally");
    }
    }
    **********************************************************************************
    以下是我写的单独测试程序,结果出错
    import java.sql.*;
    public class testSql
    {
    public testSql()
    {
    }
         public void testSql_aa()
         {
    Connection con = null;
    System.out.println("ghghghghghghghg");
    try
    {
    //Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
      String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
      String sConnStr = "jdbc:odbc:webserver";
    //String strurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webserver"; 
                             
    con = DriverManager.getConnection(sConnStr,"webuser","qwerty");
    Statement stmt = con.createStatement();

    String sql = "";

    sql = "select *  from web_repository_class";
    ResultSet rs=stmt.executeQuery(sql);
    // System.out.println("sss");
    if(rs.next())
    {
    System.out.println(rs.getString("class_name"));
    }
    }
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    catch(SQLException sqle)//错误信息出在这里
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    {
    System.err.println(sqle.getMessage()+"=sql");

    }
    catch(Exception e)
    {
    System.err.println(e.getMessage()+"=e");
    }
    finally
    {
    try
    {
    if(con != null)
    {
    con.close();
    }
    }
    catch(SQLException sqle)
    {
    System.err.println(sqle.getMessage()+"=finaly");
    }
    }
    } public static void main(String[] args)
    {
    testSql createTableApp = new testSql();
    createTableApp.testSql_aa();
    //createTableApp.testSql();
    //createTableApp.insertData();
    }

    }
    **************************************************************
    出错信息:
    ghghghghghghghg//这是我的输出
    No suitable driver=sql//这是一次里外引起的结果
      

  4.   

    我又写了一个例子,是另外一种结果
         public void testSql_aa()
         {
    Connection con = null;
    System.out.println("ghghghghghghghg");
    try
    {
    /*
    //Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
      String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
      String sConnStr = "jdbc:odbc:webserver";
    //String strurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webserver"; 
                             
    con = DriverManager.getConnection(sConnStr,"webuser","qwerty");
    Statement stmt = con.createStatement();

    String sql = "";

    sql = "select *  from web_repository_class";
    ResultSet rs=stmt.executeQuery(sql);
    // System.out.println("sss");
    if(rs.next())
    {
    System.out.println(rs.getString("class_name"));
    }
    */
    Connection MyConn=null;
    Statement  stmt=null;
    String mysql="";
    ResultSet rs=null;
    String MM_bbgl_DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    String MM_bbgl_USERNAME = "webuser";
    String MM_bbgl_PASSWORD = "qwerty";
    String MM_bbgl_STRING = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webserver";
    Class.forName(MM_bbgl_DRIVER);
    MyConn = DriverManager.getConnection(MM_bbgl_STRING,MM_bbgl_USERNAME,MM_bbgl_PASSWORD);
    stmt = MyConn.createStatement();
    mysql="select * from web_repository_class";
    rs =  stmt.executeQuery(mysql);  
    String name="name=";
    if(rs.next())
      name=name+rs.getString("class_name");
    System.out.println(name);
    }
    catch(SQLException sqle)
    {
    System.err.println(sqle.getMessage()+"=sql");

    }
    catch(Exception e)
    {
    System.err.println(e.getMessage()+"=e");
    }
    finally
    {
    try
    {
    if(con != null)
    {
    con.close();
    }
    }
    catch(SQLException sqle)
    {
    System.err.println(sqle.getMessage()+"=finaly");
    }
    }
    }
    ****************************************************************
    信息:
    C:\j2sdk1.4.1\bin>java testSql
    ghghghghghghghg
    [Microsoft][SQLServer JDBC Driver][SQLServer]无法打开登录 'webserver' 中请求的数
    据库。登录失败。=sql
      

  5.   

    怪异:我改成如下形式竟然可以了
    String MM_bbgl_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
    String MM_bbgl_USERNAME = "webuser";
    String MM_bbgl_PASSWORD = "qwerty";
    String MM_bbgl_STRING ="jdbc:odbc:webserver";
    Class.forName(MM_bbgl_DRIVER);
    conn = DriverManager.getConnection(MM_bbgl_STRING,MM_bbgl_USERNAME,MM_bbgl_PASSWORD);
    stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    为什么?
      

  6.   

    前者是通过jdbc直接来访问数据库,可能是你的url有问题所以没有找到你要访问的数据库,后者你是通过jdbc-odbc桥来访问,看看你的odbc配置,看看它和前者有什么不同!
    我的观点是,其实两者都可以成功访问,但是你第一个设置错了,第二个对了
      

  7.   

    重新启动你的web服务和数据库服务
      

  8.   

    MS的SQL SERVER驱动程序下载下来后要安装!
      

  9.   

    import java.sql.*;
    public class testSqlserverJdbc
    {
    public testSqlserverJdbc()
    {
    }
         public void testSql_aa()
         {
    Connection con = null;
    try
    {
    Connection MyConn=null;
    Statement  stmt=null;
    String mysql="";
    ResultSet rs=null;
    String MM_bbgl_DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    String MM_bbgl_USERNAME = "webuser";
    String MM_bbgl_PASSWORD = "qwerty";
    String MM_bbgl_STRING = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webserver";
    Class.forName(MM_bbgl_DRIVER);
    MyConn = DriverManager.getConnection(MM_bbgl_STRING,MM_bbgl_USERNAME,MM_bbgl_PASSWORD);
    stmt = MyConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    mysql="select * from web_repository_class";
    rs =  stmt.executeQuery(mysql);  
    String name="name=";
    if(rs.next())
       name=name+rs.getString("class_name");
    System.out.println(name);
    }
    catch(SQLException sqle)
    {
    System.err.println(sqle.getMessage()+"=sql");

    }
    catch(Exception e)
    {
    System.err.println(e.getMessage()+"=e");
    }
    finally
    {
    try
    {
    if(con != null)
    {
    con.close();
    }
    }
    catch(SQLException sqle)
    {
    System.err.println(sqle.getMessage()+"=finaly");
    }
    }
    } public static void main(String[] args)
    {
    testSqlserverJdbc createTableApp = new testSqlserverJdbc();
    createTableApp.testSql_aa();
    //createTableApp.testSql();
    //createTableApp.insertData();
    }

    }
    [Microsoft][SQLServer JDBC Driver][SQLServer]无法打开登录 'webserver' 中请求的数
    据库。登录失败.
    为什么?请帮忙
      

  10.   

    我也的很奇怪,sql server 2000企业版也不能连上。而标准版就行了。
    //你看看你的数据库用jb的数据库连接工具失败。
    //有可能是你的数据库设定的登陆方式不对。
      

  11.   

    可否有人把连接JDbc的方法给贴出来,从安装到配置,谢谢!
    不是用桥的方法