我做了一个简单的查询数据库的系统,其中连接数据库的cardConnect类如下:
package card;import java.sql.*;public class cardConnect {
  public static Connection conn=null;  public cardConnect() {
    try{
      Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    }catch(ClassNotFoundException ee){
    }
  }
  public static Connection getconn() {
      try{
      String url="jdbc:microsoft:sqlserver:QXM9YDAUVR0AL90:1433;DatabaseName=dbcard";
      String username="sa";
      String password="sa";
      return DriverManager.getConnection(url,username,password);
    }catch(Exception e){
      e.getMessage();
    }
    return conn;
  }  public static void close(ResultSet rs){
    try{
      rs.close();
    }
    catch(Exception ee){}
  }
  public static void close(Statement stmt){
    try{
      stmt.close();
    }
    catch(Exception ee){}
  }
  public static void close(Connection conn){
    try{
      conn.close();
    }
    catch(Exception ee){}
  }  public static cardConnect con=new cardConnect();
}
当我再创建其它的类要访问数据库时,如果直接写con=cardConnect.getconn();就会报错,而如果每次都将
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://QXM9YDAUVR0AL90:1433;DatabaseName=dbcard";
con=DriverManager.getConnection(url,"sa","sa");
这三句话重写一遍的话,便可以很顺利地连接数据库.
请问大虾们这是怎么回事呀?

解决方案 »

  1.   

    conn=cardConnect.getconn();
    肯定会报错,报错的类型是打不到sqlserver驱动程序.
    原因是你在得到连接之前没有加载驱动程序:
    可以这样解决://注册驱动
    public static cardConnect() { 
        try{ 
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
        }catch(ClassNotFoundException ee){ 
        } 
      } 
    //返回conn
    public static Connection getconn() { 
          cardConnect();
          try{ 
          String url="jdbc:microsoft:sqlserver:QXM9YDAUVR0AL90:1433;DatabaseName=dbcard"; 
          String username="sa"; 
          String password="sa"; 
          return DriverManager.getConnection(url,username,password); 
        }catch(Exception e){ 
          e.getMessage(); 
        } 
        return conn; 
      } 
      

  2.   

    那就是说再加一句cardConnect();?
    可是我下面已经写了一句
    public static cardConnect con=new cardConnect();
    这个不算加载驱动程序吗?