小弟编了一个JAVA连接数据库程序数据库用的是mysql驱动程序下载的是mysql-connector-java-3.1.12.zip,我把mysql-connector-java-3.1.12-bin.jar放到了C:\j2sdk1.4.2\lib下可是就是连不上数据库代码如下:
import java.sql.*;
public class UseDriverManager {

/**
 * Method main
 *
 *
 * @param args
 *
 */
public static void main(String[] args) {
String url = "jdbc:mysql://localhost/jsp_test";
    String userName = "root";
    String password = "19850209";
    Connection conn = null;
    try{
     System.out.println("加载数据库之前");
     Class.forName("com.mysql.jdbc.Driver");
     System.out.println("加载数据库之后");
    }catch(ClassNotFoundException e){
     System.out.println("加载驱动器类之后出现异常");
    }
    try{
      conn = null;
      System.out.println("第一次连接数据库之前");
      conn = DriverManager.getConnection(url,userName,password);
      System.out.println("第一次连接数据库之后");
    }catch(SQLException e){
     System.out.println("连接数据库出现异常");
    }
    if(conn == null)
    System.out.println("连接数据库失败");
    else
    System.out.println("连接数据库成功");
// TODO: Add your code here
try{
conn.close();
}catch(SQLException e){
System.out.println("关闭数据库异常");
}
}
}
运行结果是:
加载数据库之前
加载驱动器类之后出现异常
第一次连接数据库之前
连接数据库出现异常
连接数据库失败
Exception in thread "main" java.lang.NullPointerException
        at ch13.UseDriverManager.main(UseDriverManager.java:38)就是这句话 conn.close();
请高手帮忙看看

解决方案 »

  1.   

    mysql-connector-java-3.1.12-bin.jar 要加到classpath里面
    加载驱动器类之后出现异常 很显然找不到驱动啊
      

  2.   

    还是不行呀!同样的运行效果我把mysql-connector-java-3.1.12-bin.jar 加到了classpath里面
    C:\j2sdk1.4.2\lib\mysql-connector-java-3.1.12-bin.jar;
      

  3.   

    import java.sql.*;
    public class UseDriverManager 
    {
    public static void main(String[] args) {
    String url = "jdbc:mysql://localhost/jsp_test";
            String userName = "root";
            String password = "19850209";
            Connection conn = null;
            try
            {
    System.out.println("加载数据库之前");
               Class.forName("com.mysql.jdbc.Driver");
               System.out.println("加载数据库之后");
            }catch(ClassNotFoundException e)
            {
         System.out.println("加载驱动器类之后出现异常");
         }
         try
         {
           System.out.println("第一次连接数据库之前");
           conn = DriverManager.getConnection(url,userName,password);
           System.out.println("第一次连接数据库之后");
         }
         catch(SQLException e)
         {
         System.out.println("连接数据库出现异常");
         }
         if(conn == null)
         {
         System.out.println("连接数据库失败");
         }
         else
         {
         System.out.println("连接数据库成功");
    // TODO: Add your code here
    try{
    conn.close();
    }catch(SQLException e){
    System.out.println("关闭数据库异常");
    }
    }
    }
    }这样就可以了,else少了{},既然你驱动加载失败,当然connection为空,为空的connection操作close当然是空指针了。
      

  4.   

    还是不行呀!运行结果还是
    加载数据库之前
    加载驱动器类之后出现异常
    第一次连接数据库之前
    连接数据库出现异常
    连接数据库失败
    Exception in thread "main" java.lang.NullPointerException
            at ch13.UseDriverManager.main(UseDriverManager.java:38)
      

  5.   

    mysql-connector-java-3.1.12-bin.jar 
    大哥 这个东西放在你的web-inf下的lib里 晕
      

  6.   

    /*
    作成者:陈一男
    作成日:2005/7/10
    */
    package offen.com.dbdriver;
    import java.sql.*;
    public class Mysql_Driver
    {
            //获取数据库联接方法
            String sDBDriver = "com.mysql.jdbc.Driver";
            String url ="jdbc:mysql://localhost:3306/test"; //test数据库名字
            String user = "root";//用户名
            String password = "root";//密码
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
            //构造函数 在初始化时加载数据库驱动建立连接
            public Mysql_Driver()
            {
                    try {
                            Class.forName(sDBDriver);
                    } catch (java.lang.ClassNotFoundException e) {
                            System.err.println("sql_data(): " + e.getMessage());
                    }
            }
            //执行sql的插入操作
            public void executeInsert(String sql) {
                    try {
                            conn = DriverManager.getConnection(url, user, password);
                            stmt = conn.createStatement();
                            stmt.executeUpdate(sql);
                            stmt.close();
                            conn.close();
                    } catch (SQLException ex) {
                            System.err.println("sql_data.executeUpdate:" + ex.getMessage());
                    }
            }
            /**
             * 执行sql的查找操作
             * 应用时用 rs.getString("列名字")可以得到相应的数据
             * */
            public ResultSet executeQuery(String sql) {
                    try {
                            conn = DriverManager.getConnection(url, user, password);
                            stmt =
                                    conn.createStatement(
                                            ResultSet.TYPE_SCROLL_SENSITIVE,
                                            ResultSet.CONCUR_READ_ONLY);
                            rs = stmt.executeQuery(sql);
                    } catch (Exception ex) {
                            System.err.println("sql_data.executeQuery:" + ex.getMessage());
                    }
                    return rs;
            }
            //执行修改操作
            public void executeUpdate(String sql) {
                    try {
                            conn = DriverManager.getConnection(url, user, password);
                            stmt = conn.createStatement();
                            stmt.executeUpdate(sql);
                            stmt.close();
                            conn.close();
                    } catch (SQLException ex) {
                            System.err.println("aq.executeQuery: " + ex.getMessage());
                    }
            }
            //执行删除操作
            public void executeDelete(String sql) {
                    try {
                            conn = DriverManager.getConnection(url, user, password);
                            stmt = conn.createStatement();
                            stmt.executeUpdate(sql);
                            stmt.close();
                            conn.close();
                    } catch (SQLException ex) {
                            System.err.println("sql_data.executeDelete:" + ex.getMessage());
                    }
            }
            //关闭Statement流对象
            public void closeStmt() {
                    try {
                            stmt.close();
                    } catch (SQLException e) {
                            e.printStackTrace();
                    }
            }
            //关闭Connection流对象
            public void closeConn() {
                    try {
                            conn.close();
                    } catch (SQLException e) {
                            e.printStackTrace();
                    }
            }
        //测试(通过)
            public static void main(String[] args) throws Exception
            {
                    Mysql_Driver db = new Mysql_Driver();//建立连接
                    String sql = "select * from book";
                    ResultSet rs = db.executeQuery(sql);//执行操作
                    String userName = null;
                    String passWord = null;
                    while(rs.next())
                    {
                            userName = rs.getString("id");
                            passWord = rs.getString("name");//打印结果
                    }
                    db.closeConn();//
                    db.closeStmt();//关闭流
                    System.out.println(userName);
                    System.out.println(passWord);
            }}
    这么写 不要一开始就把main上去不是好习惯
      

  7.   

    不可能,你按照我的程序运行了没??你编译了吗??是否生成class,是不是放在class相应路径下,我也没有mysql-connector-java-3.1.12-bin.jar,我帮你改了,在我这里不会空指针了。
      

  8.   

    我照你的程序运行了也编译了生成了CLASS可是还是有空指针异常
      

  9.   

    你是不是没有把mysql的驱动文件拷到Tomcat 5.0\common\lib路径下面?
    还有  你最好是把错误信息打印出来
    e.printStackTrace();
      

  10.   

    是找不到你的JDBC驱动!最好在你的JRE 里面也指向JDBC驱动的