我的ConnDb类中有这么个方法
public Connection msSql2000()
{
  try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://"+ipadd+":"+port+";databaseName="+dbname;
System.out.println(url);
Connection conn = DriverManager.getConnection(
                    url,
                    username, pwd);
System.out.println(conn);
return conn;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}我在action中实例化这个对象,然后执行这个方法,Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
会报
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver但是我已经引入了sql2000的驱动,而且我直接在ConnDb这个类中写个main函数来执行这个方法,就可以执行IDE是myelipse

解决方案 »

  1.   

    你的struts 是怎么调用这个连接类的
      

  2.   

    ConnDb connDb=new ConnDb(dbtype,ipadd,dbname,port,username,pwd);
    System.out.print(connDb.chooseDB());
    if(connDb.chooseDB()!=null)
    {
    return mapping.findForward("oktest");
    }
      

  3.   

    package util;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import java.sql.SQLException;
    public class DB {
    Connection connect=null;
    ResultSet rs=null;
    private static String dbDriver="org.gjt.mm.mysql.Driver";
    private static String url="jdbc:mysql://localhost/test";
    private static String user="root";
    private static String password="123456";
    public DB(){
     try{
      Class.forName(dbDriver);//设置驱动程序类型              
      
     }catch(java.lang.ClassNotFoundException e){
      e.printStackTrace();
     }
    }
    //执行查询语句的方法
    public ResultSet executeQuery(String sql){
     try{
      connect=DriverManager.getConnection(url,user,password);//建立与数据库服务器的连接
      Statement stmt=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
      rs=stmt.executeQuery(sql);
      return rs;
     }catch(SQLException e){
      e.printStackTrace();
      return null;
     }
    }
    //TYPE_FORWARD_ONLY   表示光标只能向前移动。  
    //TYPE_SCROLL_INSENSITIVE   表示可以在记录之间移动,但对(其他ResultSet   引起的)记录改变不敏感  
    //TYPE_SCROLL_SENSITIVE   表示可以在记录之间移动,但对(其他ResultSet   引起的)记录改变敏感//执行增、删改语句的方法
    public int executeUpdate(String sql){
     int result = 0;
     try{
      connect=DriverManager.getConnection(url,user,password);
      connect.setAutoCommit(false);//改变提交的方法
      Statement stmt=connect.createStatement();
      result=stmt.executeUpdate(sql);
      connect.commit();//事务提交
      return result;
     }catch(SQLException e){
      try {
       connect.rollback();
      } catch (SQLException e1) {
       // TODO Auto-generated catch block
       e1.printStackTrace();
      }//事务回滚
      e.printStackTrace();
      return 0;
     }
    }
    //关闭数据库连接的方法
    public void close(){
     if(connect!=null){
      try{
       connect.close();
       connect = null; 
      }catch(SQLException ex) {
       System.err.println(ex.getMessage());
      }
     } 
    }
    }这是以前看到的一个JDBC的连接类,你可以试着调用下,如果你有分层的话,DAO中的类可以继承这个类,就可以使用里面的方法
    如果你直接写在ACTION中,你可以把上面的这个类写一个接口,你在继承这个接口的方法,这个是比较简单的
      

  4.   

    我的Class.forName()这句就有问题了,和其他的无关啊