版本 MySQL 4.0
     JDK 1.4
     MySQL-connect-jdk 1.0.8
连接代码如下: private String driverName = "com.mysql.jdbc.Driver"; 
private String connectString  = "jdbc:mysql://localhost:3306/dbname?user=root&password=&useUnicode=true&characterEncoding=8859_1"; 
private Statement stmt;Class.forName(driverName); 
Connection conn = DriverManager.getConnection(connectString);  stmt = conn.createStatement();

rs = stmt.executeQuery(sql);
报错信息:
connect to database is successful!java.lang.NullPointerException

解决方案 »

  1.   

    conn是null没有得到连接,检查数据库端口、地址,还有驱动程序是不是都正确
      

  2.   

    连接上了 
    就是查询时stmt = conn.createStatement();出问题
      

  3.   

    rs = stmt.executeQuery(sql);//难道是sql为null?
      

  4.   

    不是SQL为空 我打印了语句 都正常
      

  5.   

    connect to database is successful!
    这句你放在哪里打印的?
    应该就是con==null导致的
      

  6.   

    代码如下:
    import java.sql.*; 
    import java.lang.String;public class connDBTest 
    {  private String driverName = "com.mysql.jdbc.Driver"; 
    private String connectString  = "jdbc:mysql://localhost:3306/dbname?user=root&password=&useUnicode=true&characterEncoding=8859_1"; 
    private static Connection conn = null;
             private Statement stmt;

    public connDBTest()
    { try 

    Class.forName(driverName); 
    Connection conn = DriverManager.getConnection(connectString); 
    if(!conn.isClosed()) 
    System.out.println("connect to database is successful!"); 


    catch(ClassNotFoundException e) 

    System.out.println("error, can not find the driver!"); 
    e.printStackTrace(); 

    catch(SQLException e) 

    System.out.println("error, can not find the driver!"); 
    e.printStackTrace(); 

    }

    public ResultSet executeQuery(String sql) throws SQLException
    {
    ResultSet rs = null;
    System.out.println(sql);
    try 
    {
    System.out.println("1");

    stmt = conn.prepareStatement(sql);
    System.out.println("2");
    rs = stmt.executeQuery();

    System.out.println("3"); }
    catch (SQLException ex) 
    {
    System.out.println("error, the query is not successful!");
    System.out.println("connDB.executeQuery:"+ex.getMessage());
    }
    return rs;
    }
    public void close() throws SQLException
    {
    if(conn != null) conn.close();
    if(stmt != null) stmt.close();
    } public static void main(String args[]) 
    {
    ConnectDB connDB = new ConnectDB(); try{
    ResultSet rs = connDB.executeQuery("SELECT * from temptable"); while(rs.next())
    { System.out.println(rs.getString("FileName"));
    }
    System.out.println("over");

    }catch(Exception e){
    System.out.println(e.toString());
    }finally {
    System.out.println("Closing connections...");
    try {
    conn.close();
    } catch (SQLException e) {
    System.out.println("Can't close connection.");
    }
    }
    }
      

  7.   

    Connection conn = DriverManager.getConnection(connectString); 改成
     conn = DriverManager.getConnection(connectString); 
      

  8.   

    两个conn的作用域明显不一样。
    你要不把全部的测试代码放在同一个mothod(方法)内
    要不把conn变成一个field更好的方案是做一个conn管理类(连接池)
      

  9.   

    ConnectDB(); 这个函数贴出来,应该是它返回了null
      

  10.   

    private static Connection conn = null;
    没有再改变过,始终为null;
    Connection conn = DriverManager.getConnection(connectString); 
    在构造时连接成功!但此conn作用域只在构造函数内
      

  11.   

    sorry 
    main函数一个地方写错了 应该为
    connDBTest connDB = new connDBTest();
    System.out.println(connDB.toString());但是 仍然报空指针 connect to database is successful!
    connDBTest@1e0be38
    SELECT * from temptable
    1
    java.lang.NullPointerException
    Closing connections...
    java.lang.NullPointerException
    at connDBTest.main(connDBTest.java:116)
    Exception in thread "main" 
      

  12.   

    果然是conn的值的问题 没传过来 呵呵~~ 概念发生错误
    如果把conn = DriverManager.getConnection(connectString);加在查询方法里就好了
    谢了 结贴