本人做练习的时候写了一个数据库连接类DBcon.java  
 
-----------------DBcon.java------------------  
为什么要将以下两步:  
 
 1.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
 2.conn  =  DriverManager.getConnection("jdbc:odbc:***","sa","123");  
写到一个方法当中才能获得Connection的conn对象,  
如果写成  
public  void  A{  
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
}  
public  Connection  B{ 
     conn  =  DriverManager.getConnection;
     return conn; 
 
}
返回的conn为null  
 
---------------------end-----------------------  
对这段话也不是太理解:  
Class  类的实例表示正在运行的  Java  应用程序中的类和接口.  
forName(String  className):返回与带有给定字符串名的类或接口相关联的  Class  对象.其newInstance(),创建此  Class  对象所表示的类的一个新实例.  

解决方案 »

  1.   

    如果像lz这么写,如果你先调用A方法,再调用B方法的话,反正应该不是null吧?如果你只调用B方法,这样sun.jdbc.odbc.JdbcOdbcDriver驱动根本没装载进来,自然会出错。
      

  2.   

    打错字了,“反正”应该是“返回”。我的意思是,你在获得Connection之前只要能保证jdbc驱动装载进来,反正的Connection应该就不是null。
      

  3.   

    你的conn没有指向数据库地址和数据库,怎么能get到一个connection?
      

  4.   

    我想lz的代码只是个示意性的说明,他要真是写conn = DriverManager.getConnection;编译都通不过的。
      

  5.   

    推荐这样写
    public class DBConnection {
        Connection conn=null;
    //构造方法
    public DBConnection() {
    //调用创建连接方法
        createconnection();
    }
    private void createconnection() {
       try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn=DriverManager.getConnection("jdbc:odbc:***");
           } catch (ClassNotFoundException e) {
    e.printStackTrace();
           } catch (SQLException e) {
             e.printStackTrace();
           }
    }
    public  Connection  getConnection(){ 
         return conn; 
    }
    }
      

  6.   

    谢谢大家帮助...conn = DriverManager.getConnection;
    不好意思,是我的笔误.
    public  Connection  B{ 
         conn  =  DriverManager.getConnection("jdbc:odbc:***","sa","123");  
         return conn; 
    }
    jiqimiao(惊弓之鸟)给出的代码我之前也是这样写的.
    可是有一次我把
    1.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    2.conn=DriverManager.getConnection("jdbc:odbc:***");
    分开写,conn返回就为null了???再请大家帮我想想...
      

  7.   

    1.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    2.conn=DriverManager.getConnection("jdbc:odbc:***");
    分开写应该没有问题,不过要保证你的程序先执行一下1,再执行一下2
      

  8.   

    我的顺序没有写错d,把1,2写到一个方法中就ok了,反之便不可以...
    有兴趣的朋友,可以写试试...
      

  9.   

    写在一起和分开写,唯一可能的不同就是写在2个方法里的时候你没先执行forName装载驱动